|
1 /**************************************************************************** |
|
2 ** |
|
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
4 ** All rights reserved. |
|
5 ** Contact: Nokia Corporation (qt-info@nokia.com) |
|
6 ** |
|
7 ** This file is part of the QtOpenGL module of the Qt Toolkit. |
|
8 ** |
|
9 ** $QT_BEGIN_LICENSE:LGPL$ |
|
10 ** No Commercial Usage |
|
11 ** This file contains pre-release code and may not be distributed. |
|
12 ** You may use this file in accordance with the terms and conditions |
|
13 ** contained in the Technology Preview License Agreement accompanying |
|
14 ** this package. |
|
15 ** |
|
16 ** GNU Lesser General Public License Usage |
|
17 ** Alternatively, this file may be used under the terms of the GNU Lesser |
|
18 ** General Public License version 2.1 as published by the Free Software |
|
19 ** Foundation and appearing in the file LICENSE.LGPL included in the |
|
20 ** packaging of this file. Please review the following information to |
|
21 ** ensure the GNU Lesser General Public License version 2.1 requirements |
|
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
|
23 ** |
|
24 ** In addition, as a special exception, Nokia gives you certain additional |
|
25 ** rights. These rights are described in the Nokia Qt LGPL Exception |
|
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
|
27 ** |
|
28 ** If you have questions regarding the use of this file, please contact |
|
29 ** Nokia at qt-info@nokia.com. |
|
30 ** |
|
31 ** |
|
32 ** |
|
33 ** |
|
34 ** |
|
35 ** |
|
36 ** |
|
37 ** |
|
38 ** $QT_END_LICENSE$ |
|
39 ** |
|
40 ****************************************************************************/ |
|
41 |
|
42 #ifndef FRAGMENTPROGRAMS_P_H |
|
43 #define FRAGMENTPROGRAMS_P_H |
|
44 |
|
45 // |
|
46 // W A R N I N G |
|
47 // ------------- |
|
48 // |
|
49 // This file is not part of the Qt API. It exists purely as an |
|
50 // implementation detail. This header file may change from version to |
|
51 // version without notice, or even be removed. |
|
52 // |
|
53 // We mean it. |
|
54 // |
|
55 |
|
56 enum FragmentVariable { |
|
57 VAR_BRUSH_TEXTURE, |
|
58 VAR_LINEAR, |
|
59 VAR_INV_MATRIX_M1, |
|
60 VAR_INV_MASK_SIZE, |
|
61 VAR_INV_MATRIX_M2, |
|
62 VAR_PORTERDUFF_AB, |
|
63 VAR_MASK_CHANNEL, |
|
64 VAR_ELLIPSE_OFFSET, |
|
65 VAR_PORTERDUFF_XYZ, |
|
66 VAR_INV_DST_SIZE, |
|
67 VAR_MASK_TEXTURE, |
|
68 VAR_DST_TEXTURE, |
|
69 VAR_PALETTE, |
|
70 VAR_MASK_OFFSET, |
|
71 VAR_INV_BRUSH_TEXTURE_SIZE, |
|
72 VAR_FMP2_M_RADIUS2, |
|
73 VAR_FMP, |
|
74 VAR_INV_MATRIX_M0, |
|
75 VAR_ANGLE |
|
76 }; |
|
77 |
|
78 enum FragmentBrushType { |
|
79 FRAGMENT_PROGRAM_BRUSH_SOLID, |
|
80 FRAGMENT_PROGRAM_BRUSH_RADIAL, |
|
81 FRAGMENT_PROGRAM_BRUSH_CONICAL, |
|
82 FRAGMENT_PROGRAM_BRUSH_LINEAR, |
|
83 FRAGMENT_PROGRAM_BRUSH_TEXTURE, |
|
84 FRAGMENT_PROGRAM_BRUSH_PATTERN |
|
85 }; |
|
86 |
|
87 enum FragmentCompositionModeType { |
|
88 COMPOSITION_MODES_SIMPLE_PORTER_DUFF, |
|
89 COMPOSITION_MODES_MULTIPLY, |
|
90 COMPOSITION_MODES_SCREEN, |
|
91 COMPOSITION_MODES_OVERLAY, |
|
92 COMPOSITION_MODES_DARKEN, |
|
93 COMPOSITION_MODES_LIGHTEN, |
|
94 COMPOSITION_MODES_COLORDODGE, |
|
95 COMPOSITION_MODES_COLORBURN, |
|
96 COMPOSITION_MODES_HARDLIGHT, |
|
97 COMPOSITION_MODES_SOFTLIGHT, |
|
98 COMPOSITION_MODES_DIFFERENCE, |
|
99 COMPOSITION_MODES_EXCLUSION, |
|
100 COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, |
|
101 COMPOSITION_MODES_MULTIPLY_NOMASK, |
|
102 COMPOSITION_MODES_SCREEN_NOMASK, |
|
103 COMPOSITION_MODES_OVERLAY_NOMASK, |
|
104 COMPOSITION_MODES_DARKEN_NOMASK, |
|
105 COMPOSITION_MODES_LIGHTEN_NOMASK, |
|
106 COMPOSITION_MODES_COLORDODGE_NOMASK, |
|
107 COMPOSITION_MODES_COLORBURN_NOMASK, |
|
108 COMPOSITION_MODES_HARDLIGHT_NOMASK, |
|
109 COMPOSITION_MODES_SOFTLIGHT_NOMASK, |
|
110 COMPOSITION_MODES_DIFFERENCE_NOMASK, |
|
111 COMPOSITION_MODES_EXCLUSION_NOMASK, |
|
112 COMPOSITION_MODE_BLEND_MODE_MASK, |
|
113 COMPOSITION_MODE_BLEND_MODE_NOMASK |
|
114 }; |
|
115 |
|
116 enum FragmentMaskType { |
|
117 FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA, |
|
118 FRAGMENT_PROGRAM_MASK_ELLIPSE_AA |
|
119 }; |
|
120 |
|
121 static const unsigned int num_fragment_variables = 19; |
|
122 |
|
123 static const unsigned int num_fragment_brushes = 6; |
|
124 static const unsigned int num_fragment_composition_modes = 26; |
|
125 static const unsigned int num_fragment_masks = 2; |
|
126 |
|
127 static const char *FragmentProgram_FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA = |
|
128 "!!ARBfp1.0\n" |
|
129 "PARAM c[1] = { { 0.5, 2 } };\n" |
|
130 "TEMP R0;\n" |
|
131 "TEMP R1;\n" |
|
132 "TEMP R2;\n" |
|
133 "TEMP R3;\n" |
|
134 "TEMP R4;\n" |
|
135 "ADD R3.z, fragment.position.x, c[0].x;\n" |
|
136 "ADD R0.y, fragment.position, -c[0].x;\n" |
|
137 "MAX R4.x, fragment.texcoord[0].y, R0.y;\n" |
|
138 "ADD R0.x, fragment.position.y, c[0];\n" |
|
139 "MIN R3.w, R0.x, fragment.texcoord[0].x;\n" |
|
140 "ADD R2.z, fragment.position.x, -c[0].x;\n" |
|
141 "MOV R2.w, R3.z;\n" |
|
142 "MOV R0.yw, R4.x;\n" |
|
143 "MOV R0.xz, R3.w;\n" |
|
144 "MAD R0, fragment.texcoord[1].xxzz, R0, fragment.texcoord[1].yyww;\n" |
|
145 "MAD R0.zw, fragment.position.x, c[0].y, -R0;\n" |
|
146 "MOV R2.x, R0;\n" |
|
147 "MOV R2.y, R0.z;\n" |
|
148 "MOV R1.w, R0;\n" |
|
149 "MOV R1.z, R0.y;\n" |
|
150 "MIN R1.xy, R2, R1.zwzw;\n" |
|
151 "SGE R0.xy, R1.zwzw, R2;\n" |
|
152 "ADD R0.zw, -fragment.texcoord[0], -fragment.texcoord[0];\n" |
|
153 "MAD R3.xy, R0, R0.zwzw, fragment.texcoord[0].zwzw;\n" |
|
154 "ADD R0, -R1.xxyy, R2.zwzw;\n" |
|
155 "MAD R0, R0, R3.xxyy, R4.x;\n" |
|
156 "ADD R3.xy, R0.ywzw, R0.xzzw;\n" |
|
157 "ADD R4.zw, R3.w, -R0.xyxz;\n" |
|
158 "ADD R0.zw, -R4.x, R0.xyyw;\n" |
|
159 "ADD R0.xy, R3.z, -R1;\n" |
|
160 "MAX R1.zw, R2.xyxy, R1;\n" |
|
161 "MUL R0.xy, R0, R0.zwzw;\n" |
|
162 "MAD R3.xy, -R3, c[0].x, R3.w;\n" |
|
163 "ADD R2.w, R3.z, -R2.z;\n" |
|
164 "MUL R2.xy, R3, R2.w;\n" |
|
165 "ADD R2.w, R3, -R4.x;\n" |
|
166 "ADD R3.xy, -R2.z, R1.zwzw;\n" |
|
167 "MUL R3.xy, R4.zwzw, R3;\n" |
|
168 "ADD R4.zw, R1.xyxy, R1;\n" |
|
169 "MAD R0.zw, R4, c[0].x, -R2.z;\n" |
|
170 "MAD R0.xy, -R0, c[0].x, R2.w;\n" |
|
171 "MAD R4.zw, R0, R2.w, -R0.xyxy;\n" |
|
172 "SGE R0.zw, R3.z, R1;\n" |
|
173 "MAD R0.xy, R0.zwzw, R4.zwzw, R0;\n" |
|
174 "MAD R3.xy, R3, c[0].x, -R2;\n" |
|
175 "MAD R0.zw, R0, R3.xyxy, R2.xyxy;\n" |
|
176 "ADD R2.xy, R0.zwzw, -R0;\n" |
|
177 "SGE R0.zw, R2.z, R1.xyxy;\n" |
|
178 "MAD R0.xy, R0.zwzw, R2, R0;\n" |
|
179 "SGE R0.zw, R1, R2.z;\n" |
|
180 "ADD R0.xy, R0, -R2.w;\n" |
|
181 "SGE R1.xy, R3.z, R1;\n" |
|
182 "MAD R0.xy, R1, R0, R2.w;\n" |
|
183 "MAD R0.x, -R0, R0.z, R2.w;\n" |
|
184 "SGE R0.z, R3.w, R4.x;\n" |
|
185 "MAD R0.x, -R0.y, R0.w, R0;\n" |
|
186 "MUL result.color, R0.x, R0.z;\n" |
|
187 "END\n" |
|
188 ; |
|
189 |
|
190 static const char *FragmentProgram_FRAGMENT_PROGRAM_MASK_ELLIPSE_AA = |
|
191 "!!ARBfp1.0\n" |
|
192 "PARAM c[6] = { program.local[0..3],\n" |
|
193 " { -2, 1, -0.5, 2 },\n" |
|
194 " { 3 } };\n" |
|
195 "TEMP R0;\n" |
|
196 "TEMP R1;\n" |
|
197 "TEMP R2;\n" |
|
198 "ADD R0.xy, fragment.position, c[3];\n" |
|
199 "MUL R1.xyz, R0.y, c[1];\n" |
|
200 "MAD R0.xyz, R0.x, c[0], R1;\n" |
|
201 "ADD R0.xyz, R0, c[2];\n" |
|
202 "RCP R2.z, R0.z;\n" |
|
203 "MUL R0.zw, R0.xyxy, R2.z;\n" |
|
204 "MUL R2.xy, R0.zwzw, fragment.texcoord[0];\n" |
|
205 "MOV R1.xy, c[0];\n" |
|
206 "MOV R1.zw, c[1].xyxy;\n" |
|
207 "MOV R0.x, c[0].z;\n" |
|
208 "MOV R0.y, c[1].z;\n" |
|
209 "MAD R0, R0.zzww, -R0.xyxy, R1.xzyw;\n" |
|
210 "MUL R1.xy, R2, fragment.texcoord[0];\n" |
|
211 "MUL R0, R2.z, R0;\n" |
|
212 "MUL R1.xy, R1, c[4].x;\n" |
|
213 "MUL R1.zw, R1.xyxy, R0.xyxz;\n" |
|
214 "MUL R0.zw, R1.xyxy, R0.xyyw;\n" |
|
215 "ADD R0.y, R0.z, R0.w;\n" |
|
216 "ADD R0.x, R1.z, R1.w;\n" |
|
217 "MUL R0.xy, R0, R0;\n" |
|
218 "ADD R0.x, R0, R0.y;\n" |
|
219 "MUL R0.zw, R2.xyxy, R2.xyxy;\n" |
|
220 "ADD R0.z, R0, R0.w;\n" |
|
221 "ADD R0.y, -R0.z, c[4];\n" |
|
222 "RSQ R0.x, R0.x;\n" |
|
223 "MAD_SAT R0.x, R0, R0.y, -c[4].z;\n" |
|
224 "MUL R0.y, -R0.x, c[4].w;\n" |
|
225 "ADD R0.y, R0, c[5].x;\n" |
|
226 "MUL R0.x, R0, R0;\n" |
|
227 "MUL result.color, R0.x, R0.y;\n" |
|
228 "END\n" |
|
229 ; |
|
230 |
|
231 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = |
|
232 "!!ARBfp1.0\n" |
|
233 "PARAM c[7] = { program.local[0..5],\n" |
|
234 " { 1 } };\n" |
|
235 "TEMP R0;\n" |
|
236 "TEMP R1;\n" |
|
237 "TEMP R2;\n" |
|
238 "TEMP R3;\n" |
|
239 "MUL R0.xy, fragment.position, c[3];\n" |
|
240 "TEX R0, R0, texture[0], 2D;\n" |
|
241 "MUL R1.xyz, R0, c[0].y;\n" |
|
242 "MUL R2.xyz, fragment.color.primary.w, R1;\n" |
|
243 "MUL R1.xyz, fragment.color.primary, c[0].x;\n" |
|
244 "MAD R2.xyz, R0.w, R1, R2;\n" |
|
245 "ADD R3.xy, fragment.position, c[4];\n" |
|
246 "ADD R1.w, -R0, c[6].x;\n" |
|
247 "MUL R1.xyz, fragment.color.primary, c[1].y;\n" |
|
248 "MAD R2.xyz, R1.w, R1, R2;\n" |
|
249 "MUL R1.xyz, R0, c[1].z;\n" |
|
250 "ADD R2.w, -fragment.color.primary, c[6].x;\n" |
|
251 "MAD R2.xyz, R2.w, R1, R2;\n" |
|
252 "MUL R1.z, R0.w, R2.w;\n" |
|
253 "MUL R1.x, fragment.color.primary.w, R0.w;\n" |
|
254 "MUL R1.y, fragment.color.primary.w, R1.w;\n" |
|
255 "DP3 R2.w, R1, c[1];\n" |
|
256 "MUL R3.xy, R3, c[2];\n" |
|
257 "TEX R1, R3, texture[1], 2D;\n" |
|
258 "ADD R2, R2, -R0;\n" |
|
259 "DP4 R1.x, R1, c[5];\n" |
|
260 "MAD result.color, R1.x, R2, R0;\n" |
|
261 "END\n" |
|
262 ; |
|
263 |
|
264 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY = |
|
265 "!!ARBfp1.0\n" |
|
266 "PARAM c[5] = { program.local[0..3],\n" |
|
267 " { 1 } };\n" |
|
268 "TEMP R0;\n" |
|
269 "TEMP R1;\n" |
|
270 "TEMP R2;\n" |
|
271 "MUL R0.xy, fragment.position, c[1];\n" |
|
272 "TEX R0, R0, texture[0], 2D;\n" |
|
273 "ADD R1.x, -R0.w, c[4];\n" |
|
274 "MUL R1.xyz, fragment.color.primary, R1.x;\n" |
|
275 "MAD R1.xyz, fragment.color.primary, R0, R1;\n" |
|
276 "ADD R1.w, -fragment.color.primary, c[4].x;\n" |
|
277 "MAD R2.xyz, R0, R1.w, R1;\n" |
|
278 "ADD R1.z, fragment.color.primary.w, R0.w;\n" |
|
279 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" |
|
280 "ADD R1.xy, fragment.position, c[2];\n" |
|
281 "MUL R1.xy, R1, c[0];\n" |
|
282 "TEX R1, R1, texture[1], 2D;\n" |
|
283 "ADD R2, R2, -R0;\n" |
|
284 "DP4 R1.x, R1, c[3];\n" |
|
285 "MAD result.color, R1.x, R2, R0;\n" |
|
286 "END\n" |
|
287 ; |
|
288 |
|
289 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN = |
|
290 "!!ARBfp1.0\n" |
|
291 "PARAM c[4] = { program.local[0..3] };\n" |
|
292 "TEMP R0;\n" |
|
293 "TEMP R1;\n" |
|
294 "TEMP R2;\n" |
|
295 "MUL R0.xy, fragment.position, c[1];\n" |
|
296 "TEX R0, R0, texture[0], 2D;\n" |
|
297 "ADD R1.xy, fragment.position, c[2];\n" |
|
298 "ADD R2, fragment.color.primary, R0;\n" |
|
299 "MUL R1.xy, R1, c[0];\n" |
|
300 "MAD R2, -fragment.color.primary, R0, R2;\n" |
|
301 "TEX R1, R1, texture[1], 2D;\n" |
|
302 "ADD R2, R2, -R0;\n" |
|
303 "DP4 R1.x, R1, c[3];\n" |
|
304 "MAD result.color, R1.x, R2, R0;\n" |
|
305 "END\n" |
|
306 ; |
|
307 |
|
308 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY = |
|
309 "!!ARBfp1.0\n" |
|
310 "PARAM c[5] = { program.local[0..3],\n" |
|
311 " { 2, 1 } };\n" |
|
312 "TEMP R0;\n" |
|
313 "TEMP R1;\n" |
|
314 "TEMP R2;\n" |
|
315 "TEMP R3;\n" |
|
316 "MUL R0.xy, fragment.position, c[1];\n" |
|
317 "TEX R1, R0, texture[0], 2D;\n" |
|
318 "ADD R0.w, -R1, c[4].y;\n" |
|
319 "MUL R3.xyz, fragment.color.primary, R0.w;\n" |
|
320 "ADD R2.xyz, fragment.color.primary.w, -fragment.color.primary;\n" |
|
321 "ADD R0.xyz, R1.w, -R1;\n" |
|
322 "MUL R0.xyz, R0, R2;\n" |
|
323 "MUL R0.xyz, R0, c[4].x;\n" |
|
324 "MAD R0.xyz, fragment.color.primary.w, R1.w, -R0;\n" |
|
325 "MAD R0.xyz, fragment.color.primary, R0.w, R0;\n" |
|
326 "MUL R2.xyz, fragment.color.primary, R1;\n" |
|
327 "MAD R2.xyz, R2, c[4].x, R3;\n" |
|
328 "ADD R0.w, -fragment.color.primary, c[4].y;\n" |
|
329 "MAD R3.xyz, R1, R0.w, R0;\n" |
|
330 "MAD R2.xyz, R1, R0.w, R2;\n" |
|
331 "MUL R0.xyz, R1, c[4].x;\n" |
|
332 "SGE R0.xyz, R0, R1.w;\n" |
|
333 "ADD R3.xyz, R3, -R2;\n" |
|
334 "MAD R2.xyz, R0, R3, R2;\n" |
|
335 "ADD R0.z, fragment.color.primary.w, R1.w;\n" |
|
336 "MAD R2.w, -fragment.color.primary, R1, R0.z;\n" |
|
337 "ADD R0.xy, fragment.position, c[2];\n" |
|
338 "MUL R0.xy, R0, c[0];\n" |
|
339 "TEX R0, R0, texture[1], 2D;\n" |
|
340 "ADD R2, R2, -R1;\n" |
|
341 "DP4 R0.x, R0, c[3];\n" |
|
342 "MAD result.color, R0.x, R2, R1;\n" |
|
343 "END\n" |
|
344 ; |
|
345 |
|
346 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN = |
|
347 "!!ARBfp1.0\n" |
|
348 "PARAM c[5] = { program.local[0..3],\n" |
|
349 " { 1 } };\n" |
|
350 "TEMP R0;\n" |
|
351 "TEMP R1;\n" |
|
352 "TEMP R2;\n" |
|
353 "MUL R0.xy, fragment.position, c[1];\n" |
|
354 "TEX R0, R0, texture[0], 2D;\n" |
|
355 "MUL R2.xyz, fragment.color.primary.w, R0;\n" |
|
356 "MUL R1.xyz, fragment.color.primary, R0.w;\n" |
|
357 "MIN R1.xyz, R1, R2;\n" |
|
358 "ADD R1.w, -R0, c[4].x;\n" |
|
359 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" |
|
360 "ADD R1.w, -fragment.color.primary, c[4].x;\n" |
|
361 "MAD R2.xyz, R0, R1.w, R1;\n" |
|
362 "ADD R1.z, fragment.color.primary.w, R0.w;\n" |
|
363 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" |
|
364 "ADD R1.xy, fragment.position, c[2];\n" |
|
365 "MUL R1.xy, R1, c[0];\n" |
|
366 "TEX R1, R1, texture[1], 2D;\n" |
|
367 "ADD R2, R2, -R0;\n" |
|
368 "DP4 R1.x, R1, c[3];\n" |
|
369 "MAD result.color, R1.x, R2, R0;\n" |
|
370 "END\n" |
|
371 ; |
|
372 |
|
373 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN = |
|
374 "!!ARBfp1.0\n" |
|
375 "PARAM c[5] = { program.local[0..3],\n" |
|
376 " { 1 } };\n" |
|
377 "TEMP R0;\n" |
|
378 "TEMP R1;\n" |
|
379 "TEMP R2;\n" |
|
380 "MUL R0.xy, fragment.position, c[1];\n" |
|
381 "TEX R0, R0, texture[0], 2D;\n" |
|
382 "MUL R2.xyz, fragment.color.primary.w, R0;\n" |
|
383 "MUL R1.xyz, fragment.color.primary, R0.w;\n" |
|
384 "MAX R1.xyz, R1, R2;\n" |
|
385 "ADD R1.w, -R0, c[4].x;\n" |
|
386 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" |
|
387 "ADD R1.w, -fragment.color.primary, c[4].x;\n" |
|
388 "MAD R2.xyz, R0, R1.w, R1;\n" |
|
389 "ADD R1.z, fragment.color.primary.w, R0.w;\n" |
|
390 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" |
|
391 "ADD R1.xy, fragment.position, c[2];\n" |
|
392 "MUL R1.xy, R1, c[0];\n" |
|
393 "TEX R1, R1, texture[1], 2D;\n" |
|
394 "ADD R2, R2, -R0;\n" |
|
395 "DP4 R1.x, R1, c[3];\n" |
|
396 "MAD result.color, R1.x, R2, R0;\n" |
|
397 "END\n" |
|
398 ; |
|
399 |
|
400 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE = |
|
401 "!!ARBfp1.0\n" |
|
402 "PARAM c[5] = { program.local[0..3],\n" |
|
403 " { 1, 1e-006 } };\n" |
|
404 "TEMP R0;\n" |
|
405 "TEMP R1;\n" |
|
406 "TEMP R2;\n" |
|
407 "TEMP R3;\n" |
|
408 "MUL R0.xy, fragment.position, c[1];\n" |
|
409 "TEX R0, R0, texture[0], 2D;\n" |
|
410 "ADD R1.x, -fragment.color.primary.w, c[4];\n" |
|
411 "MAX R1.y, fragment.color.primary.w, c[4];\n" |
|
412 "MUL R2.xyz, R0, R1.x;\n" |
|
413 "ADD R1.w, -R0, c[4].x;\n" |
|
414 "MAD R3.xyz, fragment.color.primary, R1.w, R2;\n" |
|
415 "RCP R1.y, R1.y;\n" |
|
416 "MAD R1.xyz, -fragment.color.primary, R1.y, c[4].x;\n" |
|
417 "MAX R1.xyz, R1, c[4].y;\n" |
|
418 "MUL R2.xyz, fragment.color.primary.w, R0;\n" |
|
419 "MUL R1.w, fragment.color.primary, R0;\n" |
|
420 "RCP R1.x, R1.x;\n" |
|
421 "RCP R1.y, R1.y;\n" |
|
422 "RCP R1.z, R1.z;\n" |
|
423 "MAD R1.xyz, R2, R1, R3;\n" |
|
424 "MAD R3.xyz, fragment.color.primary.w, R0.w, R3;\n" |
|
425 "MAD R2.xyz, fragment.color.primary, R0.w, R2;\n" |
|
426 "ADD R3.xyz, R3, -R1;\n" |
|
427 "SGE R2.xyz, R2, R1.w;\n" |
|
428 "MAD R2.xyz, R2, R3, R1;\n" |
|
429 "ADD R1.z, fragment.color.primary.w, R0.w;\n" |
|
430 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" |
|
431 "ADD R1.xy, fragment.position, c[2];\n" |
|
432 "MUL R1.xy, R1, c[0];\n" |
|
433 "TEX R1, R1, texture[1], 2D;\n" |
|
434 "ADD R2, R2, -R0;\n" |
|
435 "DP4 R1.x, R1, c[3];\n" |
|
436 "MAD result.color, R1.x, R2, R0;\n" |
|
437 "END\n" |
|
438 ; |
|
439 |
|
440 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN = |
|
441 "!!ARBfp1.0\n" |
|
442 "PARAM c[5] = { program.local[0..3],\n" |
|
443 " { 1, 9.9999997e-006 } };\n" |
|
444 "TEMP R0;\n" |
|
445 "TEMP R1;\n" |
|
446 "TEMP R2;\n" |
|
447 "TEMP R3;\n" |
|
448 "TEMP R4;\n" |
|
449 "MUL R0.xy, fragment.position, c[1];\n" |
|
450 "TEX R0, R0, texture[0], 2D;\n" |
|
451 "ADD R1.w, -R0, c[4].x;\n" |
|
452 "MUL R1.xyz, fragment.color.primary.w, R0;\n" |
|
453 "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n" |
|
454 "MAD R1.xyz, -fragment.color.primary.w, R0.w, R2;\n" |
|
455 "MUL R3.xyz, fragment.color.primary.w, R1;\n" |
|
456 "MAX R1.xyz, fragment.color.primary, c[4].y;\n" |
|
457 "ADD R2.w, -fragment.color.primary, c[4].x;\n" |
|
458 "MUL R4.xyz, fragment.color.primary, R1.w;\n" |
|
459 "RCP R1.x, R1.x;\n" |
|
460 "RCP R1.y, R1.y;\n" |
|
461 "RCP R1.z, R1.z;\n" |
|
462 "MAD R3.xyz, R3, R1, R4;\n" |
|
463 "MUL R1.xyz, R0, R2.w;\n" |
|
464 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" |
|
465 "MAD R3.xyz, R0, R2.w, R3;\n" |
|
466 "MUL R1.w, fragment.color.primary, R0;\n" |
|
467 "ADD R3.xyz, R3, -R1;\n" |
|
468 "SGE R2.xyz, R2, R1.w;\n" |
|
469 "MAD R2.xyz, R2, R3, R1;\n" |
|
470 "ADD R1.z, fragment.color.primary.w, R0.w;\n" |
|
471 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" |
|
472 "ADD R1.xy, fragment.position, c[2];\n" |
|
473 "MUL R1.xy, R1, c[0];\n" |
|
474 "TEX R1, R1, texture[1], 2D;\n" |
|
475 "ADD R2, R2, -R0;\n" |
|
476 "DP4 R1.x, R1, c[3];\n" |
|
477 "MAD result.color, R1.x, R2, R0;\n" |
|
478 "END\n" |
|
479 ; |
|
480 |
|
481 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT = |
|
482 "!!ARBfp1.0\n" |
|
483 "PARAM c[5] = { program.local[0..3],\n" |
|
484 " { 2, 1 } };\n" |
|
485 "TEMP R0;\n" |
|
486 "TEMP R1;\n" |
|
487 "TEMP R2;\n" |
|
488 "TEMP R3;\n" |
|
489 "MUL R0.xy, fragment.position, c[1];\n" |
|
490 "TEX R1, R0, texture[0], 2D;\n" |
|
491 "ADD R0.w, -R1, c[4].y;\n" |
|
492 "MUL R3.xyz, fragment.color.primary, R0.w;\n" |
|
493 "ADD R2.xyz, fragment.color.primary.w, -fragment.color.primary;\n" |
|
494 "ADD R0.xyz, R1.w, -R1;\n" |
|
495 "MUL R0.xyz, R0, R2;\n" |
|
496 "MUL R0.xyz, R0, c[4].x;\n" |
|
497 "MAD R0.xyz, fragment.color.primary.w, R1.w, -R0;\n" |
|
498 "MAD R0.xyz, fragment.color.primary, R0.w, R0;\n" |
|
499 "MUL R2.xyz, fragment.color.primary, R1;\n" |
|
500 "MAD R2.xyz, R2, c[4].x, R3;\n" |
|
501 "ADD R0.w, -fragment.color.primary, c[4].y;\n" |
|
502 "MAD R3.xyz, R1, R0.w, R0;\n" |
|
503 "MAD R2.xyz, R1, R0.w, R2;\n" |
|
504 "MUL R0.xyz, fragment.color.primary, c[4].x;\n" |
|
505 "SGE R0.xyz, R0, fragment.color.primary.w;\n" |
|
506 "ADD R3.xyz, R3, -R2;\n" |
|
507 "MAD R2.xyz, R0, R3, R2;\n" |
|
508 "ADD R0.z, fragment.color.primary.w, R1.w;\n" |
|
509 "MAD R2.w, -fragment.color.primary, R1, R0.z;\n" |
|
510 "ADD R0.xy, fragment.position, c[2];\n" |
|
511 "MUL R0.xy, R0, c[0];\n" |
|
512 "TEX R0, R0, texture[1], 2D;\n" |
|
513 "ADD R2, R2, -R1;\n" |
|
514 "DP4 R0.x, R0, c[3];\n" |
|
515 "MAD result.color, R0.x, R2, R1;\n" |
|
516 "END\n" |
|
517 ; |
|
518 |
|
519 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT = |
|
520 "!!ARBfp1.0\n" |
|
521 "PARAM c[6] = { program.local[0..3],\n" |
|
522 " { 1, 2, 9.9999997e-006, 8 },\n" |
|
523 " { 3 } };\n" |
|
524 "TEMP R0;\n" |
|
525 "TEMP R1;\n" |
|
526 "TEMP R2;\n" |
|
527 "TEMP R3;\n" |
|
528 "TEMP R4;\n" |
|
529 "TEMP R5;\n" |
|
530 "MUL R0.xy, fragment.position, c[1];\n" |
|
531 "TEX R0, R0, texture[0], 2D;\n" |
|
532 "MAX R1.x, R0.w, c[4].z;\n" |
|
533 "RCP R1.w, R1.x;\n" |
|
534 "MUL R1.xyz, R0, R1.w;\n" |
|
535 "MUL R4.xyz, -R1, c[4].w;\n" |
|
536 "RSQ R2.x, R1.x;\n" |
|
537 "RSQ R2.z, R1.z;\n" |
|
538 "RSQ R2.y, R1.y;\n" |
|
539 "MAD R1.xyz, -R0, R1.w, c[4].x;\n" |
|
540 "RCP R2.x, R2.x;\n" |
|
541 "RCP R2.z, R2.z;\n" |
|
542 "RCP R2.y, R2.y;\n" |
|
543 "MAD R3.xyz, R0.w, R2, -R0;\n" |
|
544 "MAD R2.xyz, fragment.color.primary, c[4].y, -fragment.color.primary.w;\n" |
|
545 "MUL R3.xyz, R2, R3;\n" |
|
546 "ADD R5.xyz, R4, c[5].x;\n" |
|
547 "MUL R4.xyz, R1, R2;\n" |
|
548 "MAD R1.xyz, -R1, R2, fragment.color.primary.w;\n" |
|
549 "MUL R2.xyz, fragment.color.primary, c[4].y;\n" |
|
550 "MAD R5.xyz, -R4, R5, fragment.color.primary.w;\n" |
|
551 "MAD R3.xyz, fragment.color.primary.w, R0, R3;\n" |
|
552 "MAD R4.xyz, -R0, R5, R3;\n" |
|
553 "MUL R3.xyz, R0, c[4].w;\n" |
|
554 "MUL R5.xyz, R0, R5;\n" |
|
555 "SGE R3.xyz, R3, R0.w;\n" |
|
556 "MAD R3.xyz, R3, R4, R5;\n" |
|
557 "MAD R3.xyz, -R0, R1, R3;\n" |
|
558 "MUL R1.xyz, R0, R1;\n" |
|
559 "SGE R2.xyz, R2, fragment.color.primary.w;\n" |
|
560 "MAD R2.xyz, R2, R3, R1;\n" |
|
561 "ADD R1.x, -R0.w, c[4];\n" |
|
562 "MAD R2.xyz, fragment.color.primary, R1.x, R2;\n" |
|
563 "ADD R1.x, -fragment.color.primary.w, c[4];\n" |
|
564 "MAD R2.xyz, R0, R1.x, R2;\n" |
|
565 "ADD R1.z, fragment.color.primary.w, R0.w;\n" |
|
566 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" |
|
567 "ADD R1.xy, fragment.position, c[2];\n" |
|
568 "MUL R1.xy, R1, c[0];\n" |
|
569 "TEX R1, R1, texture[1], 2D;\n" |
|
570 "ADD R2, R2, -R0;\n" |
|
571 "DP4 R1.x, R1, c[3];\n" |
|
572 "MAD result.color, R1.x, R2, R0;\n" |
|
573 "END\n" |
|
574 ; |
|
575 |
|
576 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE = |
|
577 "!!ARBfp1.0\n" |
|
578 "PARAM c[5] = { program.local[0..3],\n" |
|
579 " { 2 } };\n" |
|
580 "TEMP R0;\n" |
|
581 "TEMP R1;\n" |
|
582 "TEMP R2;\n" |
|
583 "TEMP R3;\n" |
|
584 "MUL R0.xy, fragment.position, c[1];\n" |
|
585 "TEX R0, R0, texture[0], 2D;\n" |
|
586 "ADD R1.xyz, fragment.color.primary, R0;\n" |
|
587 "MUL R3.xyz, fragment.color.primary.w, R0;\n" |
|
588 "MUL R2.xyz, fragment.color.primary, R0.w;\n" |
|
589 "MIN R2.xyz, R2, R3;\n" |
|
590 "MAD R2.xyz, -R2, c[4].x, R1;\n" |
|
591 "ADD R1.z, fragment.color.primary.w, R0.w;\n" |
|
592 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" |
|
593 "ADD R1.xy, fragment.position, c[2];\n" |
|
594 "MUL R1.xy, R1, c[0];\n" |
|
595 "TEX R1, R1, texture[1], 2D;\n" |
|
596 "ADD R2, R2, -R0;\n" |
|
597 "DP4 R1.x, R1, c[3];\n" |
|
598 "MAD result.color, R1.x, R2, R0;\n" |
|
599 "END\n" |
|
600 ; |
|
601 |
|
602 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION = |
|
603 "!!ARBfp1.0\n" |
|
604 "PARAM c[5] = { program.local[0..3],\n" |
|
605 " { 2, 1 } };\n" |
|
606 "TEMP R0;\n" |
|
607 "TEMP R1;\n" |
|
608 "TEMP R2;\n" |
|
609 "MUL R0.xy, fragment.position, c[1];\n" |
|
610 "TEX R0, R0, texture[0], 2D;\n" |
|
611 "MUL R1.xyz, fragment.color.primary.w, R0;\n" |
|
612 "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n" |
|
613 "MUL R1.xyz, fragment.color.primary, R0;\n" |
|
614 "MAD R1.xyz, -R1, c[4].x, R2;\n" |
|
615 "ADD R1.w, -R0, c[4].y;\n" |
|
616 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" |
|
617 "ADD R1.w, -fragment.color.primary, c[4].y;\n" |
|
618 "MAD R2.xyz, R0, R1.w, R1;\n" |
|
619 "ADD R1.z, fragment.color.primary.w, R0.w;\n" |
|
620 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" |
|
621 "ADD R1.xy, fragment.position, c[2];\n" |
|
622 "MUL R1.xy, R1, c[0];\n" |
|
623 "TEX R1, R1, texture[1], 2D;\n" |
|
624 "ADD R2, R2, -R0;\n" |
|
625 "DP4 R1.x, R1, c[3];\n" |
|
626 "MAD result.color, R1.x, R2, R0;\n" |
|
627 "END\n" |
|
628 ; |
|
629 |
|
630 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = |
|
631 "!!ARBfp1.0\n" |
|
632 "PARAM c[4] = { program.local[0..2],\n" |
|
633 " { 1 } };\n" |
|
634 "TEMP R0;\n" |
|
635 "TEMP R1;\n" |
|
636 "TEMP R2;\n" |
|
637 "MUL R0.xy, fragment.position, c[2];\n" |
|
638 "TEX R0, R0, texture[0], 2D;\n" |
|
639 "MUL R1.xyz, R0, c[0].y;\n" |
|
640 "MUL R2.xyz, fragment.color.primary.w, R1;\n" |
|
641 "MUL R1.xyz, fragment.color.primary, c[0].x;\n" |
|
642 "MAD R2.xyz, R0.w, R1, R2;\n" |
|
643 "MUL R0.xyz, R0, c[1].z;\n" |
|
644 "ADD R1.w, -R0, c[3].x;\n" |
|
645 "MUL R1.xyz, fragment.color.primary, c[1].y;\n" |
|
646 "MAD R1.xyz, R1.w, R1, R2;\n" |
|
647 "ADD R2.x, -fragment.color.primary.w, c[3];\n" |
|
648 "MAD result.color.xyz, R2.x, R0, R1;\n" |
|
649 "MUL R0.x, fragment.color.primary.w, R0.w;\n" |
|
650 "MUL R0.z, R0.w, R2.x;\n" |
|
651 "MUL R0.y, fragment.color.primary.w, R1.w;\n" |
|
652 "DP3 result.color.w, R0, c[1];\n" |
|
653 "END\n" |
|
654 ; |
|
655 |
|
656 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY_NOMASK = |
|
657 "!!ARBfp1.0\n" |
|
658 "PARAM c[2] = { program.local[0],\n" |
|
659 " { 1 } };\n" |
|
660 "TEMP R0;\n" |
|
661 "TEMP R1;\n" |
|
662 "TEMP R2;\n" |
|
663 "MUL R0.xy, fragment.position, c[0];\n" |
|
664 "TEX R0, R0, texture[0], 2D;\n" |
|
665 "ADD R1.x, -R0.w, c[1];\n" |
|
666 "MUL R1.xyz, fragment.color.primary, R1.x;\n" |
|
667 "ADD R1.w, fragment.color.primary, R0;\n" |
|
668 "MAD R1.xyz, fragment.color.primary, R0, R1;\n" |
|
669 "ADD R2.x, -fragment.color.primary.w, c[1];\n" |
|
670 "MAD result.color.xyz, R0, R2.x, R1;\n" |
|
671 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" |
|
672 "END\n" |
|
673 ; |
|
674 |
|
675 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN_NOMASK = |
|
676 "!!ARBfp1.0\n" |
|
677 "PARAM c[1] = { program.local[0] };\n" |
|
678 "TEMP R0;\n" |
|
679 "TEMP R1;\n" |
|
680 "MUL R0.xy, fragment.position, c[0];\n" |
|
681 "TEX R0, R0, texture[0], 2D;\n" |
|
682 "ADD R1, fragment.color.primary, R0;\n" |
|
683 "MAD result.color, -fragment.color.primary, R0, R1;\n" |
|
684 "END\n" |
|
685 ; |
|
686 |
|
687 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY_NOMASK = |
|
688 "!!ARBfp1.0\n" |
|
689 "PARAM c[2] = { program.local[0],\n" |
|
690 " { 2, 1 } };\n" |
|
691 "TEMP R0;\n" |
|
692 "TEMP R1;\n" |
|
693 "TEMP R2;\n" |
|
694 "TEMP R3;\n" |
|
695 "MUL R0.xy, fragment.position, c[0];\n" |
|
696 "TEX R0, R0, texture[0], 2D;\n" |
|
697 "ADD R1.w, -R0, c[1].y;\n" |
|
698 "ADD R2.xyz, fragment.color.primary.w, -fragment.color.primary;\n" |
|
699 "ADD R1.xyz, R0.w, -R0;\n" |
|
700 "MUL R1.xyz, R1, R2;\n" |
|
701 "MUL R1.xyz, R1, c[1].x;\n" |
|
702 "MAD R1.xyz, fragment.color.primary.w, R0.w, -R1;\n" |
|
703 "MUL R3.xyz, fragment.color.primary, R1.w;\n" |
|
704 "MUL R2.xyz, fragment.color.primary, R0;\n" |
|
705 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" |
|
706 "ADD R1.w, -fragment.color.primary, c[1].y;\n" |
|
707 "MAD R2.xyz, R2, c[1].x, R3;\n" |
|
708 "MAD R2.xyz, R0, R1.w, R2;\n" |
|
709 "MAD R1.xyz, R0, R1.w, R1;\n" |
|
710 "MUL R0.xyz, R0, c[1].x;\n" |
|
711 "ADD R1.w, fragment.color.primary, R0;\n" |
|
712 "ADD R1.xyz, R1, -R2;\n" |
|
713 "SGE R0.xyz, R0, R0.w;\n" |
|
714 "MAD result.color.xyz, R0, R1, R2;\n" |
|
715 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" |
|
716 "END\n" |
|
717 ; |
|
718 |
|
719 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN_NOMASK = |
|
720 "!!ARBfp1.0\n" |
|
721 "PARAM c[2] = { program.local[0],\n" |
|
722 " { 1 } };\n" |
|
723 "TEMP R0;\n" |
|
724 "TEMP R1;\n" |
|
725 "TEMP R2;\n" |
|
726 "MUL R0.xy, fragment.position, c[0];\n" |
|
727 "TEX R0, R0, texture[0], 2D;\n" |
|
728 "MUL R2.xyz, fragment.color.primary.w, R0;\n" |
|
729 "MUL R1.xyz, fragment.color.primary, R0.w;\n" |
|
730 "MIN R1.xyz, R1, R2;\n" |
|
731 "ADD R1.w, -R0, c[1].x;\n" |
|
732 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" |
|
733 "ADD R1.w, fragment.color.primary, R0;\n" |
|
734 "ADD R2.x, -fragment.color.primary.w, c[1];\n" |
|
735 "MAD result.color.xyz, R0, R2.x, R1;\n" |
|
736 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" |
|
737 "END\n" |
|
738 ; |
|
739 |
|
740 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN_NOMASK = |
|
741 "!!ARBfp1.0\n" |
|
742 "PARAM c[2] = { program.local[0],\n" |
|
743 " { 1 } };\n" |
|
744 "TEMP R0;\n" |
|
745 "TEMP R1;\n" |
|
746 "TEMP R2;\n" |
|
747 "MUL R0.xy, fragment.position, c[0];\n" |
|
748 "TEX R0, R0, texture[0], 2D;\n" |
|
749 "MUL R2.xyz, fragment.color.primary.w, R0;\n" |
|
750 "MUL R1.xyz, fragment.color.primary, R0.w;\n" |
|
751 "MAX R1.xyz, R1, R2;\n" |
|
752 "ADD R1.w, -R0, c[1].x;\n" |
|
753 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" |
|
754 "ADD R1.w, fragment.color.primary, R0;\n" |
|
755 "ADD R2.x, -fragment.color.primary.w, c[1];\n" |
|
756 "MAD result.color.xyz, R0, R2.x, R1;\n" |
|
757 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" |
|
758 "END\n" |
|
759 ; |
|
760 |
|
761 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE_NOMASK = |
|
762 "!!ARBfp1.0\n" |
|
763 "PARAM c[2] = { program.local[0],\n" |
|
764 " { 1, 1e-006 } };\n" |
|
765 "TEMP R0;\n" |
|
766 "TEMP R1;\n" |
|
767 "TEMP R2;\n" |
|
768 "MAX R1.y, fragment.color.primary.w, c[1];\n" |
|
769 "RCP R2.x, R1.y;\n" |
|
770 "MUL R0.xy, fragment.position, c[0];\n" |
|
771 "TEX R0, R0, texture[0], 2D;\n" |
|
772 "ADD R1.x, -fragment.color.primary.w, c[1];\n" |
|
773 "MUL R1.xyz, R0, R1.x;\n" |
|
774 "ADD R1.w, -R0, c[1].x;\n" |
|
775 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" |
|
776 "MAD R2.xyz, -fragment.color.primary, R2.x, c[1].x;\n" |
|
777 "MAX R2.xyz, R2, c[1].y;\n" |
|
778 "MUL R0.xyz, fragment.color.primary.w, R0;\n" |
|
779 "MUL R1.w, fragment.color.primary, R0;\n" |
|
780 "RCP R2.x, R2.x;\n" |
|
781 "RCP R2.y, R2.y;\n" |
|
782 "RCP R2.z, R2.z;\n" |
|
783 "MAD R2.xyz, R0, R2, R1;\n" |
|
784 "MAD R1.xyz, fragment.color.primary.w, R0.w, R1;\n" |
|
785 "MAD R0.xyz, fragment.color.primary, R0.w, R0;\n" |
|
786 "SGE R0.xyz, R0, R1.w;\n" |
|
787 "ADD R1.xyz, R1, -R2;\n" |
|
788 "ADD R1.w, fragment.color.primary, R0;\n" |
|
789 "MAD result.color.xyz, R0, R1, R2;\n" |
|
790 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" |
|
791 "END\n" |
|
792 ; |
|
793 |
|
794 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN_NOMASK = |
|
795 "!!ARBfp1.0\n" |
|
796 "PARAM c[2] = { program.local[0],\n" |
|
797 " { 1, 9.9999997e-006 } };\n" |
|
798 "TEMP R0;\n" |
|
799 "TEMP R1;\n" |
|
800 "TEMP R2;\n" |
|
801 "TEMP R3;\n" |
|
802 "TEMP R4;\n" |
|
803 "MUL R0.xy, fragment.position, c[0];\n" |
|
804 "TEX R0, R0, texture[0], 2D;\n" |
|
805 "MUL R1.xyz, fragment.color.primary.w, R0;\n" |
|
806 "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n" |
|
807 "MAD R1.xyz, -fragment.color.primary.w, R0.w, R2;\n" |
|
808 "MUL R3.xyz, fragment.color.primary.w, R1;\n" |
|
809 "MAX R1.xyz, fragment.color.primary, c[1].y;\n" |
|
810 "ADD R1.w, -R0, c[1].x;\n" |
|
811 "MUL R4.xyz, fragment.color.primary, R1.w;\n" |
|
812 "ADD R2.w, -fragment.color.primary, c[1].x;\n" |
|
813 "RCP R1.x, R1.x;\n" |
|
814 "RCP R1.y, R1.y;\n" |
|
815 "RCP R1.z, R1.z;\n" |
|
816 "MAD R1.xyz, R3, R1, R4;\n" |
|
817 "MUL R3.xyz, R0, R2.w;\n" |
|
818 "MAD R0.xyz, R0, R2.w, R1;\n" |
|
819 "MAD R1.xyz, fragment.color.primary, R1.w, R3;\n" |
|
820 "MUL R1.w, fragment.color.primary, R0;\n" |
|
821 "SGE R2.xyz, R2, R1.w;\n" |
|
822 "ADD R0.xyz, R0, -R1;\n" |
|
823 "ADD R1.w, fragment.color.primary, R0;\n" |
|
824 "MAD result.color.xyz, R2, R0, R1;\n" |
|
825 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" |
|
826 "END\n" |
|
827 ; |
|
828 |
|
829 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT_NOMASK = |
|
830 "!!ARBfp1.0\n" |
|
831 "PARAM c[2] = { program.local[0],\n" |
|
832 " { 2, 1 } };\n" |
|
833 "TEMP R0;\n" |
|
834 "TEMP R1;\n" |
|
835 "TEMP R2;\n" |
|
836 "TEMP R3;\n" |
|
837 "MUL R0.xy, fragment.position, c[0];\n" |
|
838 "TEX R0, R0, texture[0], 2D;\n" |
|
839 "ADD R1.w, -R0, c[1].y;\n" |
|
840 "ADD R2.xyz, fragment.color.primary.w, -fragment.color.primary;\n" |
|
841 "ADD R1.xyz, R0.w, -R0;\n" |
|
842 "MUL R1.xyz, R1, R2;\n" |
|
843 "MUL R1.xyz, R1, c[1].x;\n" |
|
844 "MAD R1.xyz, fragment.color.primary.w, R0.w, -R1;\n" |
|
845 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" |
|
846 "MUL R3.xyz, fragment.color.primary, R1.w;\n" |
|
847 "MUL R2.xyz, fragment.color.primary, R0;\n" |
|
848 "ADD R1.w, -fragment.color.primary, c[1].y;\n" |
|
849 "MAD R2.xyz, R2, c[1].x, R3;\n" |
|
850 "MAD R2.xyz, R0, R1.w, R2;\n" |
|
851 "MAD R0.xyz, R0, R1.w, R1;\n" |
|
852 "ADD R1.xyz, R0, -R2;\n" |
|
853 "MUL R0.xyz, fragment.color.primary, c[1].x;\n" |
|
854 "ADD R1.w, fragment.color.primary, R0;\n" |
|
855 "SGE R0.xyz, R0, fragment.color.primary.w;\n" |
|
856 "MAD result.color.xyz, R0, R1, R2;\n" |
|
857 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" |
|
858 "END\n" |
|
859 ; |
|
860 |
|
861 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT_NOMASK = |
|
862 "!!ARBfp1.0\n" |
|
863 "PARAM c[3] = { program.local[0],\n" |
|
864 " { 1, 2, 9.9999997e-006, 8 },\n" |
|
865 " { 3 } };\n" |
|
866 "TEMP R0;\n" |
|
867 "TEMP R1;\n" |
|
868 "TEMP R2;\n" |
|
869 "TEMP R3;\n" |
|
870 "TEMP R4;\n" |
|
871 "TEMP R5;\n" |
|
872 "MUL R0.xy, fragment.position, c[0];\n" |
|
873 "TEX R0, R0, texture[0], 2D;\n" |
|
874 "MAX R1.x, R0.w, c[1].z;\n" |
|
875 "RCP R1.w, R1.x;\n" |
|
876 "MUL R1.xyz, R0, R1.w;\n" |
|
877 "MUL R4.xyz, -R1, c[1].w;\n" |
|
878 "RSQ R2.x, R1.x;\n" |
|
879 "RSQ R2.z, R1.z;\n" |
|
880 "RSQ R2.y, R1.y;\n" |
|
881 "RCP R2.x, R2.x;\n" |
|
882 "RCP R2.z, R2.z;\n" |
|
883 "RCP R2.y, R2.y;\n" |
|
884 "MAD R3.xyz, R0.w, R2, -R0;\n" |
|
885 "MAD R2.xyz, fragment.color.primary, c[1].y, -fragment.color.primary.w;\n" |
|
886 "MUL R3.xyz, R2, R3;\n" |
|
887 "MAD R3.xyz, fragment.color.primary.w, R0, R3;\n" |
|
888 "MAD R1.xyz, -R0, R1.w, c[1].x;\n" |
|
889 "ADD R5.xyz, R4, c[2].x;\n" |
|
890 "MUL R4.xyz, R1, R2;\n" |
|
891 "MAD R1.xyz, -R1, R2, fragment.color.primary.w;\n" |
|
892 "MAD R5.xyz, -R4, R5, fragment.color.primary.w;\n" |
|
893 "MAD R4.xyz, -R0, R5, R3;\n" |
|
894 "MUL R3.xyz, R0, c[1].w;\n" |
|
895 "MUL R2.xyz, fragment.color.primary, c[1].y;\n" |
|
896 "MUL R5.xyz, R0, R5;\n" |
|
897 "SGE R3.xyz, R3, R0.w;\n" |
|
898 "MAD R3.xyz, R3, R4, R5;\n" |
|
899 "MAD R3.xyz, -R0, R1, R3;\n" |
|
900 "MUL R1.xyz, R0, R1;\n" |
|
901 "SGE R2.xyz, R2, fragment.color.primary.w;\n" |
|
902 "MAD R2.xyz, R2, R3, R1;\n" |
|
903 "ADD R1.x, -R0.w, c[1];\n" |
|
904 "MAD R2.xyz, fragment.color.primary, R1.x, R2;\n" |
|
905 "ADD R1.x, fragment.color.primary.w, R0.w;\n" |
|
906 "ADD R1.y, -fragment.color.primary.w, c[1].x;\n" |
|
907 "MAD result.color.xyz, R0, R1.y, R2;\n" |
|
908 "MAD result.color.w, -fragment.color.primary, R0, R1.x;\n" |
|
909 "END\n" |
|
910 ; |
|
911 |
|
912 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE_NOMASK = |
|
913 "!!ARBfp1.0\n" |
|
914 "PARAM c[2] = { program.local[0],\n" |
|
915 " { 2 } };\n" |
|
916 "TEMP R0;\n" |
|
917 "TEMP R1;\n" |
|
918 "TEMP R2;\n" |
|
919 "MUL R0.xy, fragment.position, c[0];\n" |
|
920 "TEX R0, R0, texture[0], 2D;\n" |
|
921 "MUL R2.xyz, fragment.color.primary.w, R0;\n" |
|
922 "MUL R1.xyz, fragment.color.primary, R0.w;\n" |
|
923 "ADD R1.w, fragment.color.primary, R0;\n" |
|
924 "MIN R1.xyz, R1, R2;\n" |
|
925 "ADD R0.xyz, fragment.color.primary, R0;\n" |
|
926 "MAD result.color.xyz, -R1, c[1].x, R0;\n" |
|
927 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" |
|
928 "END\n" |
|
929 ; |
|
930 |
|
931 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION_NOMASK = |
|
932 "!!ARBfp1.0\n" |
|
933 "PARAM c[2] = { program.local[0],\n" |
|
934 " { 2, 1 } };\n" |
|
935 "TEMP R0;\n" |
|
936 "TEMP R1;\n" |
|
937 "TEMP R2;\n" |
|
938 "MUL R0.xy, fragment.position, c[0];\n" |
|
939 "TEX R0, R0, texture[0], 2D;\n" |
|
940 "MUL R1.xyz, fragment.color.primary.w, R0;\n" |
|
941 "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n" |
|
942 "MUL R1.xyz, fragment.color.primary, R0;\n" |
|
943 "MAD R1.xyz, -R1, c[1].x, R2;\n" |
|
944 "ADD R1.w, -R0, c[1].y;\n" |
|
945 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" |
|
946 "ADD R1.w, fragment.color.primary, R0;\n" |
|
947 "ADD R2.x, -fragment.color.primary.w, c[1].y;\n" |
|
948 "MAD result.color.xyz, R0, R2.x, R1;\n" |
|
949 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" |
|
950 "END\n" |
|
951 ; |
|
952 |
|
953 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_MASK = |
|
954 "!!ARBfp1.0\n" |
|
955 "PARAM c[3] = { program.local[0..2] };\n" |
|
956 "TEMP R0;\n" |
|
957 "ADD R0.xy, fragment.position, c[1];\n" |
|
958 "MUL R0.xy, R0, c[0];\n" |
|
959 "TEX R0, R0, texture[0], 2D;\n" |
|
960 "DP4 R0.x, R0, c[2];\n" |
|
961 "MUL result.color, fragment.color.primary, R0.x;\n" |
|
962 "END\n" |
|
963 ; |
|
964 |
|
965 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_NOMASK = |
|
966 "!!ARBfp1.0\n" |
|
967 "MOV result.color, fragment.color.primary;\n" |
|
968 "END\n" |
|
969 ; |
|
970 |
|
971 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = |
|
972 "!!ARBfp1.0\n" |
|
973 "PARAM c[12] = { program.local[0..10],\n" |
|
974 " { 2, 4, 1 } };\n" |
|
975 "TEMP R0;\n" |
|
976 "TEMP R1;\n" |
|
977 "TEMP R2;\n" |
|
978 "TEMP R3;\n" |
|
979 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
980 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
981 "ADD R0.xyz, R0, c[4];\n" |
|
982 "RCP R0.z, R0.z;\n" |
|
983 "MUL R0.xy, R0, R0.z;\n" |
|
984 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
985 "ADD R0.z, R0, R0.w;\n" |
|
986 "MUL R0.xy, R0, c[0];\n" |
|
987 "ADD R0.x, R0, R0.y;\n" |
|
988 "MUL R0.z, -R0, c[1].x;\n" |
|
989 "MUL R0.y, R0.x, c[11].x;\n" |
|
990 "MUL R0.z, R0, c[11].y;\n" |
|
991 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
992 "RSQ R0.x, R0.x;\n" |
|
993 "RCP R0.z, R0.x;\n" |
|
994 "ADD R1.x, -R0.y, R0.z;\n" |
|
995 "MOV R0.x, c[11];\n" |
|
996 "MUL R0.z, R0.x, c[1].x;\n" |
|
997 "RCP R1.y, R0.z;\n" |
|
998 "MUL R0.xy, fragment.position, c[8];\n" |
|
999 "TEX R0, R0, texture[0], 2D;\n" |
|
1000 "MUL R1.x, R1, R1.y;\n" |
|
1001 "TEX R1, R1, texture[2], 1D;\n" |
|
1002 "MUL R2.xyz, R0, c[5].y;\n" |
|
1003 "MUL R3.xyz, R1.w, R2;\n" |
|
1004 "MUL R2.xyz, R1, c[5].x;\n" |
|
1005 "MAD R2.xyz, R0.w, R2, R3;\n" |
|
1006 "ADD R3.xy, fragment.position, c[9];\n" |
|
1007 "ADD R2.w, -R0, c[11].z;\n" |
|
1008 "MUL R1.xyz, R1, c[6].y;\n" |
|
1009 "MAD R2.xyz, R2.w, R1, R2;\n" |
|
1010 "MUL R1.xyz, R0, c[6].z;\n" |
|
1011 "ADD R3.z, -R1.w, c[11];\n" |
|
1012 "MAD R2.xyz, R3.z, R1, R2;\n" |
|
1013 "MUL R1.y, R1.w, R2.w;\n" |
|
1014 "MUL R1.x, R1.w, R0.w;\n" |
|
1015 "MUL R1.z, R0.w, R3;\n" |
|
1016 "DP3 R2.w, R1, c[6];\n" |
|
1017 "MUL R3.xy, R3, c[7];\n" |
|
1018 "TEX R1, R3, texture[1], 2D;\n" |
|
1019 "ADD R2, R2, -R0;\n" |
|
1020 "DP4 R1.x, R1, c[10];\n" |
|
1021 "MAD result.color, R1.x, R2, R0;\n" |
|
1022 "END\n" |
|
1023 ; |
|
1024 |
|
1025 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY = |
|
1026 "!!ARBfp1.0\n" |
|
1027 "PARAM c[10] = { program.local[0..8],\n" |
|
1028 " { 2, 4, 1 } };\n" |
|
1029 "TEMP R0;\n" |
|
1030 "TEMP R1;\n" |
|
1031 "TEMP R2;\n" |
|
1032 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1033 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1034 "ADD R0.xyz, R0, c[4];\n" |
|
1035 "RCP R0.z, R0.z;\n" |
|
1036 "MUL R0.xy, R0, R0.z;\n" |
|
1037 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1038 "ADD R0.z, R0, R0.w;\n" |
|
1039 "MUL R0.xy, R0, c[0];\n" |
|
1040 "ADD R0.x, R0, R0.y;\n" |
|
1041 "MUL R0.z, -R0, c[1].x;\n" |
|
1042 "MUL R0.y, R0.x, c[9].x;\n" |
|
1043 "MUL R0.z, R0, c[9].y;\n" |
|
1044 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1045 "RSQ R0.x, R0.x;\n" |
|
1046 "RCP R0.z, R0.x;\n" |
|
1047 "ADD R1.x, -R0.y, R0.z;\n" |
|
1048 "MOV R0.x, c[9];\n" |
|
1049 "MUL R0.z, R0.x, c[1].x;\n" |
|
1050 "RCP R1.y, R0.z;\n" |
|
1051 "MUL R0.xy, fragment.position, c[6];\n" |
|
1052 "TEX R0, R0, texture[0], 2D;\n" |
|
1053 "MUL R1.x, R1, R1.y;\n" |
|
1054 "TEX R1, R1, texture[2], 1D;\n" |
|
1055 "ADD R2.x, -R0.w, c[9].z;\n" |
|
1056 "MUL R2.xyz, R1, R2.x;\n" |
|
1057 "MAD R1.xyz, R1, R0, R2;\n" |
|
1058 "ADD R2.x, -R1.w, c[9].z;\n" |
|
1059 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
1060 "ADD R1.z, R1.w, R0.w;\n" |
|
1061 "MAD R2.w, -R1, R0, R1.z;\n" |
|
1062 "ADD R1.xy, fragment.position, c[7];\n" |
|
1063 "MUL R1.xy, R1, c[5];\n" |
|
1064 "TEX R1, R1, texture[1], 2D;\n" |
|
1065 "ADD R2, R2, -R0;\n" |
|
1066 "DP4 R1.x, R1, c[8];\n" |
|
1067 "MAD result.color, R1.x, R2, R0;\n" |
|
1068 "END\n" |
|
1069 ; |
|
1070 |
|
1071 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN = |
|
1072 "!!ARBfp1.0\n" |
|
1073 "PARAM c[10] = { program.local[0..8],\n" |
|
1074 " { 2, 4 } };\n" |
|
1075 "TEMP R0;\n" |
|
1076 "TEMP R1;\n" |
|
1077 "TEMP R2;\n" |
|
1078 "TEMP R3;\n" |
|
1079 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1080 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1081 "ADD R0.xyz, R0, c[4];\n" |
|
1082 "RCP R0.z, R0.z;\n" |
|
1083 "MUL R0.xy, R0, R0.z;\n" |
|
1084 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1085 "ADD R0.z, R0, R0.w;\n" |
|
1086 "MUL R0.xy, R0, c[0];\n" |
|
1087 "ADD R0.x, R0, R0.y;\n" |
|
1088 "MUL R0.y, R0.x, c[9].x;\n" |
|
1089 "MOV R0.x, c[9];\n" |
|
1090 "MUL R0.z, -R0, c[1].x;\n" |
|
1091 "MUL R0.z, R0, c[9].y;\n" |
|
1092 "MAD R0.z, R0.y, R0.y, -R0;\n" |
|
1093 "ADD R3.xy, fragment.position, c[7];\n" |
|
1094 "MUL R0.w, R0.x, c[1].x;\n" |
|
1095 "RSQ R0.z, R0.z;\n" |
|
1096 "RCP R0.x, R0.z;\n" |
|
1097 "RCP R0.z, R0.w;\n" |
|
1098 "ADD R0.x, -R0.y, R0;\n" |
|
1099 "MUL R0.z, R0.x, R0;\n" |
|
1100 "TEX R1, R0.z, texture[2], 1D;\n" |
|
1101 "MUL R0.xy, fragment.position, c[6];\n" |
|
1102 "TEX R0, R0, texture[0], 2D;\n" |
|
1103 "ADD R2, R1, R0;\n" |
|
1104 "MAD R2, -R1, R0, R2;\n" |
|
1105 "MUL R3.xy, R3, c[5];\n" |
|
1106 "TEX R1, R3, texture[1], 2D;\n" |
|
1107 "ADD R2, R2, -R0;\n" |
|
1108 "DP4 R1.x, R1, c[8];\n" |
|
1109 "MAD result.color, R1.x, R2, R0;\n" |
|
1110 "END\n" |
|
1111 ; |
|
1112 |
|
1113 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY = |
|
1114 "!!ARBfp1.0\n" |
|
1115 "PARAM c[10] = { program.local[0..8],\n" |
|
1116 " { 2, 4, 1 } };\n" |
|
1117 "TEMP R0;\n" |
|
1118 "TEMP R1;\n" |
|
1119 "TEMP R2;\n" |
|
1120 "TEMP R3;\n" |
|
1121 "TEMP R4;\n" |
|
1122 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1123 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1124 "ADD R0.xyz, R0, c[4];\n" |
|
1125 "RCP R0.z, R0.z;\n" |
|
1126 "MUL R0.xy, R0, R0.z;\n" |
|
1127 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1128 "ADD R0.z, R0, R0.w;\n" |
|
1129 "MUL R0.xy, R0, c[0];\n" |
|
1130 "ADD R0.x, R0, R0.y;\n" |
|
1131 "MUL R0.y, R0.x, c[9].x;\n" |
|
1132 "MOV R0.x, c[9];\n" |
|
1133 "MUL R0.z, -R0, c[1].x;\n" |
|
1134 "MUL R0.z, R0, c[9].y;\n" |
|
1135 "MAD R0.z, R0.y, R0.y, -R0;\n" |
|
1136 "MUL R1.xy, fragment.position, c[6];\n" |
|
1137 "TEX R1, R1, texture[0], 2D;\n" |
|
1138 "MUL R0.w, R0.x, c[1].x;\n" |
|
1139 "RSQ R0.z, R0.z;\n" |
|
1140 "RCP R0.x, R0.z;\n" |
|
1141 "ADD R2.w, -R1, c[9].z;\n" |
|
1142 "RCP R0.z, R0.w;\n" |
|
1143 "ADD R0.x, -R0.y, R0;\n" |
|
1144 "MUL R0.x, R0, R0.z;\n" |
|
1145 "TEX R0, R0, texture[2], 1D;\n" |
|
1146 "ADD R3.xyz, R0.w, -R0;\n" |
|
1147 "ADD R2.xyz, R1.w, -R1;\n" |
|
1148 "MUL R2.xyz, R2, R3;\n" |
|
1149 "MUL R2.xyz, R2, c[9].x;\n" |
|
1150 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
1151 "MUL R4.xyz, R0, R2.w;\n" |
|
1152 "MUL R3.xyz, R0, R1;\n" |
|
1153 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
1154 "ADD R2.x, -R0.w, c[9].z;\n" |
|
1155 "MAD R3.xyz, R3, c[9].x, R4;\n" |
|
1156 "MAD R3.xyz, R1, R2.x, R3;\n" |
|
1157 "MAD R0.xyz, R1, R2.x, R0;\n" |
|
1158 "MUL R2.xyz, R1, c[9].x;\n" |
|
1159 "ADD R0.xyz, R0, -R3;\n" |
|
1160 "SGE R2.xyz, R2, R1.w;\n" |
|
1161 "MAD R2.xyz, R2, R0, R3;\n" |
|
1162 "ADD R0.z, R0.w, R1.w;\n" |
|
1163 "MAD R2.w, -R0, R1, R0.z;\n" |
|
1164 "ADD R0.xy, fragment.position, c[7];\n" |
|
1165 "MUL R0.xy, R0, c[5];\n" |
|
1166 "TEX R0, R0, texture[1], 2D;\n" |
|
1167 "ADD R2, R2, -R1;\n" |
|
1168 "DP4 R0.x, R0, c[8];\n" |
|
1169 "MAD result.color, R0.x, R2, R1;\n" |
|
1170 "END\n" |
|
1171 ; |
|
1172 |
|
1173 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN = |
|
1174 "!!ARBfp1.0\n" |
|
1175 "PARAM c[10] = { program.local[0..8],\n" |
|
1176 " { 2, 4, 1 } };\n" |
|
1177 "TEMP R0;\n" |
|
1178 "TEMP R1;\n" |
|
1179 "TEMP R2;\n" |
|
1180 "TEMP R3;\n" |
|
1181 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1182 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1183 "ADD R0.xyz, R0, c[4];\n" |
|
1184 "RCP R0.z, R0.z;\n" |
|
1185 "MUL R0.xy, R0, R0.z;\n" |
|
1186 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1187 "ADD R0.z, R0, R0.w;\n" |
|
1188 "MUL R0.xy, R0, c[0];\n" |
|
1189 "ADD R0.x, R0, R0.y;\n" |
|
1190 "MUL R0.z, -R0, c[1].x;\n" |
|
1191 "MUL R0.y, R0.x, c[9].x;\n" |
|
1192 "MUL R0.z, R0, c[9].y;\n" |
|
1193 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1194 "RSQ R0.z, R0.x;\n" |
|
1195 "MOV R0.x, c[9];\n" |
|
1196 "MUL R0.x, R0, c[1];\n" |
|
1197 "RCP R0.z, R0.z;\n" |
|
1198 "ADD R0.z, -R0.y, R0;\n" |
|
1199 "RCP R0.w, R0.x;\n" |
|
1200 "MUL R1.x, R0.z, R0.w;\n" |
|
1201 "MUL R0.xy, fragment.position, c[6];\n" |
|
1202 "TEX R0, R0, texture[0], 2D;\n" |
|
1203 "TEX R1, R1, texture[2], 1D;\n" |
|
1204 "MUL R3.xyz, R1.w, R0;\n" |
|
1205 "MUL R2.xyz, R1, R0.w;\n" |
|
1206 "MIN R2.xyz, R2, R3;\n" |
|
1207 "ADD R2.w, -R0, c[9].z;\n" |
|
1208 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
1209 "ADD R2.x, -R1.w, c[9].z;\n" |
|
1210 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
1211 "ADD R1.z, R1.w, R0.w;\n" |
|
1212 "MAD R2.w, -R1, R0, R1.z;\n" |
|
1213 "ADD R1.xy, fragment.position, c[7];\n" |
|
1214 "MUL R1.xy, R1, c[5];\n" |
|
1215 "TEX R1, R1, texture[1], 2D;\n" |
|
1216 "ADD R2, R2, -R0;\n" |
|
1217 "DP4 R1.x, R1, c[8];\n" |
|
1218 "MAD result.color, R1.x, R2, R0;\n" |
|
1219 "END\n" |
|
1220 ; |
|
1221 |
|
1222 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN = |
|
1223 "!!ARBfp1.0\n" |
|
1224 "PARAM c[10] = { program.local[0..8],\n" |
|
1225 " { 2, 4, 1 } };\n" |
|
1226 "TEMP R0;\n" |
|
1227 "TEMP R1;\n" |
|
1228 "TEMP R2;\n" |
|
1229 "TEMP R3;\n" |
|
1230 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1231 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1232 "ADD R0.xyz, R0, c[4];\n" |
|
1233 "RCP R0.z, R0.z;\n" |
|
1234 "MUL R0.xy, R0, R0.z;\n" |
|
1235 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1236 "ADD R0.z, R0, R0.w;\n" |
|
1237 "MUL R0.xy, R0, c[0];\n" |
|
1238 "ADD R0.x, R0, R0.y;\n" |
|
1239 "MUL R0.z, -R0, c[1].x;\n" |
|
1240 "MUL R0.y, R0.x, c[9].x;\n" |
|
1241 "MUL R0.z, R0, c[9].y;\n" |
|
1242 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1243 "RSQ R0.z, R0.x;\n" |
|
1244 "MOV R0.x, c[9];\n" |
|
1245 "MUL R0.x, R0, c[1];\n" |
|
1246 "RCP R0.z, R0.z;\n" |
|
1247 "ADD R0.z, -R0.y, R0;\n" |
|
1248 "RCP R0.w, R0.x;\n" |
|
1249 "MUL R1.x, R0.z, R0.w;\n" |
|
1250 "MUL R0.xy, fragment.position, c[6];\n" |
|
1251 "TEX R0, R0, texture[0], 2D;\n" |
|
1252 "TEX R1, R1, texture[2], 1D;\n" |
|
1253 "MUL R3.xyz, R1.w, R0;\n" |
|
1254 "MUL R2.xyz, R1, R0.w;\n" |
|
1255 "MAX R2.xyz, R2, R3;\n" |
|
1256 "ADD R2.w, -R0, c[9].z;\n" |
|
1257 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
1258 "ADD R2.x, -R1.w, c[9].z;\n" |
|
1259 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
1260 "ADD R1.z, R1.w, R0.w;\n" |
|
1261 "MAD R2.w, -R1, R0, R1.z;\n" |
|
1262 "ADD R1.xy, fragment.position, c[7];\n" |
|
1263 "MUL R1.xy, R1, c[5];\n" |
|
1264 "TEX R1, R1, texture[1], 2D;\n" |
|
1265 "ADD R2, R2, -R0;\n" |
|
1266 "DP4 R1.x, R1, c[8];\n" |
|
1267 "MAD result.color, R1.x, R2, R0;\n" |
|
1268 "END\n" |
|
1269 ; |
|
1270 |
|
1271 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE = |
|
1272 "!!ARBfp1.0\n" |
|
1273 "PARAM c[10] = { program.local[0..8],\n" |
|
1274 " { 2, 4, 1, 1e-006 } };\n" |
|
1275 "TEMP R0;\n" |
|
1276 "TEMP R1;\n" |
|
1277 "TEMP R2;\n" |
|
1278 "TEMP R3;\n" |
|
1279 "TEMP R4;\n" |
|
1280 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1281 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1282 "ADD R0.xyz, R0, c[4];\n" |
|
1283 "RCP R0.z, R0.z;\n" |
|
1284 "MUL R0.xy, R0, R0.z;\n" |
|
1285 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1286 "ADD R0.z, R0, R0.w;\n" |
|
1287 "MUL R0.xy, R0, c[0];\n" |
|
1288 "ADD R0.x, R0, R0.y;\n" |
|
1289 "MUL R0.y, R0.x, c[9].x;\n" |
|
1290 "MOV R0.x, c[9];\n" |
|
1291 "MUL R0.z, -R0, c[1].x;\n" |
|
1292 "MUL R0.z, R0, c[9].y;\n" |
|
1293 "MAD R0.z, R0.y, R0.y, -R0;\n" |
|
1294 "MUL R0.w, R0.x, c[1].x;\n" |
|
1295 "RSQ R0.z, R0.z;\n" |
|
1296 "RCP R0.x, R0.z;\n" |
|
1297 "RCP R0.z, R0.w;\n" |
|
1298 "ADD R0.x, -R0.y, R0;\n" |
|
1299 "MUL R0.x, R0, R0.z;\n" |
|
1300 "TEX R0, R0, texture[2], 1D;\n" |
|
1301 "MAX R1.x, R0.w, c[9].w;\n" |
|
1302 "RCP R1.x, R1.x;\n" |
|
1303 "MAD R1.xyz, -R0, R1.x, c[9].z;\n" |
|
1304 "MAX R2.xyz, R1, c[9].w;\n" |
|
1305 "MUL R1.xy, fragment.position, c[6];\n" |
|
1306 "TEX R1, R1, texture[0], 2D;\n" |
|
1307 "ADD R2.w, -R0, c[9].z;\n" |
|
1308 "MUL R3.xyz, R1, R2.w;\n" |
|
1309 "ADD R2.w, -R1, c[9].z;\n" |
|
1310 "MAD R4.xyz, R0, R2.w, R3;\n" |
|
1311 "MUL R3.xyz, R0.w, R1;\n" |
|
1312 "MUL R2.w, R0, R1;\n" |
|
1313 "MAD R0.xyz, R0, R1.w, R3;\n" |
|
1314 "SGE R0.xyz, R0, R2.w;\n" |
|
1315 "RCP R2.x, R2.x;\n" |
|
1316 "RCP R2.y, R2.y;\n" |
|
1317 "RCP R2.z, R2.z;\n" |
|
1318 "MAD R2.xyz, R3, R2, R4;\n" |
|
1319 "MAD R4.xyz, R0.w, R1.w, R4;\n" |
|
1320 "ADD R4.xyz, R4, -R2;\n" |
|
1321 "MAD R2.xyz, R0, R4, R2;\n" |
|
1322 "ADD R0.z, R0.w, R1.w;\n" |
|
1323 "MAD R2.w, -R0, R1, R0.z;\n" |
|
1324 "ADD R0.xy, fragment.position, c[7];\n" |
|
1325 "MUL R0.xy, R0, c[5];\n" |
|
1326 "TEX R0, R0, texture[1], 2D;\n" |
|
1327 "ADD R2, R2, -R1;\n" |
|
1328 "DP4 R0.x, R0, c[8];\n" |
|
1329 "MAD result.color, R0.x, R2, R1;\n" |
|
1330 "END\n" |
|
1331 ; |
|
1332 |
|
1333 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN = |
|
1334 "!!ARBfp1.0\n" |
|
1335 "PARAM c[10] = { program.local[0..8],\n" |
|
1336 " { 2, 4, 1, 9.9999997e-006 } };\n" |
|
1337 "TEMP R0;\n" |
|
1338 "TEMP R1;\n" |
|
1339 "TEMP R2;\n" |
|
1340 "TEMP R3;\n" |
|
1341 "TEMP R4;\n" |
|
1342 "TEMP R5;\n" |
|
1343 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1344 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1345 "ADD R0.xyz, R0, c[4];\n" |
|
1346 "RCP R0.z, R0.z;\n" |
|
1347 "MUL R0.xy, R0, R0.z;\n" |
|
1348 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1349 "ADD R0.z, R0, R0.w;\n" |
|
1350 "MUL R0.xy, R0, c[0];\n" |
|
1351 "ADD R0.x, R0, R0.y;\n" |
|
1352 "MUL R0.z, -R0, c[1].x;\n" |
|
1353 "MUL R0.y, R0.x, c[9].x;\n" |
|
1354 "MUL R0.z, R0, c[9].y;\n" |
|
1355 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1356 "RSQ R0.z, R0.x;\n" |
|
1357 "MOV R0.x, c[9];\n" |
|
1358 "MUL R0.w, R0.x, c[1].x;\n" |
|
1359 "RCP R0.z, R0.z;\n" |
|
1360 "ADD R0.x, -R0.y, R0.z;\n" |
|
1361 "RCP R0.y, R0.w;\n" |
|
1362 "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n" |
|
1363 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
1364 "MUL R0.x, R0, R0.y;\n" |
|
1365 "TEX R0, R0, texture[2], 1D;\n" |
|
1366 "MUL R2.xyz, R0.w, R1;\n" |
|
1367 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
1368 "MAD R2.xyz, -R0.w, R1.w, R3;\n" |
|
1369 "MUL R4.xyz, R0.w, R2;\n" |
|
1370 "MAX R2.xyz, R0, c[9].w;\n" |
|
1371 "ADD R2.w, -R1, c[9].z;\n" |
|
1372 "MUL R5.xyz, R0, R2.w;\n" |
|
1373 "ADD R3.w, -R0, c[9].z;\n" |
|
1374 "RCP R2.x, R2.x;\n" |
|
1375 "RCP R2.y, R2.y;\n" |
|
1376 "RCP R2.z, R2.z;\n" |
|
1377 "MAD R2.xyz, R4, R2, R5;\n" |
|
1378 "MUL R4.xyz, R1, R3.w;\n" |
|
1379 "MAD R0.xyz, R0, R2.w, R4;\n" |
|
1380 "MUL R2.w, R0, R1;\n" |
|
1381 "MAD R2.xyz, R1, R3.w, R2;\n" |
|
1382 "ADD R2.xyz, R2, -R0;\n" |
|
1383 "SGE R3.xyz, R3, R2.w;\n" |
|
1384 "MAD R2.xyz, R3, R2, R0;\n" |
|
1385 "ADD R0.z, R0.w, R1.w;\n" |
|
1386 "MAD R2.w, -R0, R1, R0.z;\n" |
|
1387 "ADD R0.xy, fragment.position, c[7];\n" |
|
1388 "MUL R0.xy, R0, c[5];\n" |
|
1389 "TEX R0, R0, texture[1], 2D;\n" |
|
1390 "ADD R2, R2, -R1;\n" |
|
1391 "DP4 R0.x, R0, c[8];\n" |
|
1392 "MAD result.color, R0.x, R2, R1;\n" |
|
1393 "END\n" |
|
1394 ; |
|
1395 |
|
1396 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT = |
|
1397 "!!ARBfp1.0\n" |
|
1398 "PARAM c[10] = { program.local[0..8],\n" |
|
1399 " { 2, 4, 1 } };\n" |
|
1400 "TEMP R0;\n" |
|
1401 "TEMP R1;\n" |
|
1402 "TEMP R2;\n" |
|
1403 "TEMP R3;\n" |
|
1404 "TEMP R4;\n" |
|
1405 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1406 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1407 "ADD R0.xyz, R0, c[4];\n" |
|
1408 "RCP R0.z, R0.z;\n" |
|
1409 "MUL R0.xy, R0, R0.z;\n" |
|
1410 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1411 "ADD R0.z, R0, R0.w;\n" |
|
1412 "MUL R0.xy, R0, c[0];\n" |
|
1413 "ADD R0.x, R0, R0.y;\n" |
|
1414 "MUL R0.y, R0.x, c[9].x;\n" |
|
1415 "MOV R0.x, c[9];\n" |
|
1416 "MUL R0.z, -R0, c[1].x;\n" |
|
1417 "MUL R0.z, R0, c[9].y;\n" |
|
1418 "MAD R0.z, R0.y, R0.y, -R0;\n" |
|
1419 "MUL R1.xy, fragment.position, c[6];\n" |
|
1420 "TEX R1, R1, texture[0], 2D;\n" |
|
1421 "MUL R0.w, R0.x, c[1].x;\n" |
|
1422 "RSQ R0.z, R0.z;\n" |
|
1423 "RCP R0.x, R0.z;\n" |
|
1424 "ADD R2.w, -R1, c[9].z;\n" |
|
1425 "RCP R0.z, R0.w;\n" |
|
1426 "ADD R0.x, -R0.y, R0;\n" |
|
1427 "MUL R0.x, R0, R0.z;\n" |
|
1428 "TEX R0, R0, texture[2], 1D;\n" |
|
1429 "ADD R3.xyz, R0.w, -R0;\n" |
|
1430 "ADD R2.xyz, R1.w, -R1;\n" |
|
1431 "MUL R2.xyz, R2, R3;\n" |
|
1432 "MUL R2.xyz, R2, c[9].x;\n" |
|
1433 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
1434 "MUL R4.xyz, R0, R2.w;\n" |
|
1435 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
1436 "MUL R3.xyz, R0, R1;\n" |
|
1437 "ADD R2.w, -R0, c[9].z;\n" |
|
1438 "MAD R3.xyz, R3, c[9].x, R4;\n" |
|
1439 "MUL R0.xyz, R0, c[9].x;\n" |
|
1440 "SGE R0.xyz, R0, R0.w;\n" |
|
1441 "MAD R3.xyz, R1, R2.w, R3;\n" |
|
1442 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
1443 "ADD R2.xyz, R2, -R3;\n" |
|
1444 "MAD R2.xyz, R0, R2, R3;\n" |
|
1445 "ADD R0.z, R0.w, R1.w;\n" |
|
1446 "MAD R2.w, -R0, R1, R0.z;\n" |
|
1447 "ADD R0.xy, fragment.position, c[7];\n" |
|
1448 "MUL R0.xy, R0, c[5];\n" |
|
1449 "TEX R0, R0, texture[1], 2D;\n" |
|
1450 "ADD R2, R2, -R1;\n" |
|
1451 "DP4 R0.x, R0, c[8];\n" |
|
1452 "MAD result.color, R0.x, R2, R1;\n" |
|
1453 "END\n" |
|
1454 ; |
|
1455 |
|
1456 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT = |
|
1457 "!!ARBfp1.0\n" |
|
1458 "PARAM c[11] = { program.local[0..8],\n" |
|
1459 " { 2, 4, 1, 9.9999997e-006 },\n" |
|
1460 " { 8, 3 } };\n" |
|
1461 "TEMP R0;\n" |
|
1462 "TEMP R1;\n" |
|
1463 "TEMP R2;\n" |
|
1464 "TEMP R3;\n" |
|
1465 "TEMP R4;\n" |
|
1466 "TEMP R5;\n" |
|
1467 "TEMP R6;\n" |
|
1468 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1469 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1470 "ADD R0.xyz, R0, c[4];\n" |
|
1471 "RCP R0.z, R0.z;\n" |
|
1472 "MUL R1.xy, fragment.position, c[6];\n" |
|
1473 "TEX R1, R1, texture[0], 2D;\n" |
|
1474 "MAX R0.w, R1, c[9];\n" |
|
1475 "RCP R2.w, R0.w;\n" |
|
1476 "MUL R5.xyz, R1, R2.w;\n" |
|
1477 "MUL R0.xy, R0, R0.z;\n" |
|
1478 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1479 "ADD R0.z, R0, R0.w;\n" |
|
1480 "MUL R0.xy, R0, c[0];\n" |
|
1481 "ADD R0.x, R0, R0.y;\n" |
|
1482 "MUL R0.y, R0.x, c[9].x;\n" |
|
1483 "MOV R0.x, c[9];\n" |
|
1484 "RSQ R2.x, R5.x;\n" |
|
1485 "RSQ R2.z, R5.z;\n" |
|
1486 "RSQ R2.y, R5.y;\n" |
|
1487 "MUL R0.z, -R0, c[1].x;\n" |
|
1488 "MUL R0.z, R0, c[9].y;\n" |
|
1489 "MAD R0.z, R0.y, R0.y, -R0;\n" |
|
1490 "MUL R0.w, R0.x, c[1].x;\n" |
|
1491 "RSQ R0.z, R0.z;\n" |
|
1492 "RCP R0.x, R0.z;\n" |
|
1493 "RCP R0.z, R0.w;\n" |
|
1494 "ADD R0.x, -R0.y, R0;\n" |
|
1495 "MUL R0.x, R0, R0.z;\n" |
|
1496 "TEX R0, R0, texture[2], 1D;\n" |
|
1497 "MAD R3.xyz, R0, c[9].x, -R0.w;\n" |
|
1498 "MAD R6.xyz, -R5, c[10].x, c[10].y;\n" |
|
1499 "RCP R2.x, R2.x;\n" |
|
1500 "RCP R2.z, R2.z;\n" |
|
1501 "RCP R2.y, R2.y;\n" |
|
1502 "MAD R2.xyz, R1.w, R2, -R1;\n" |
|
1503 "MUL R2.xyz, R3, R2;\n" |
|
1504 "MAD R4.xyz, R0.w, R1, R2;\n" |
|
1505 "MAD R2.xyz, -R1, R2.w, c[9].z;\n" |
|
1506 "MUL R5.xyz, R2, R3;\n" |
|
1507 "MAD R6.xyz, -R5, R6, R0.w;\n" |
|
1508 "MAD R5.xyz, -R1, R6, R4;\n" |
|
1509 "MAD R2.xyz, -R2, R3, R0.w;\n" |
|
1510 "MUL R3.xyz, R0, c[9].x;\n" |
|
1511 "MUL R4.xyz, R1, c[10].x;\n" |
|
1512 "SGE R3.xyz, R3, R0.w;\n" |
|
1513 "ADD R2.w, -R1, c[9].z;\n" |
|
1514 "MUL R6.xyz, R1, R6;\n" |
|
1515 "SGE R4.xyz, R4, R1.w;\n" |
|
1516 "MAD R4.xyz, R4, R5, R6;\n" |
|
1517 "MAD R4.xyz, -R1, R2, R4;\n" |
|
1518 "MUL R2.xyz, R1, R2;\n" |
|
1519 "MAD R2.xyz, R3, R4, R2;\n" |
|
1520 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
1521 "ADD R0.x, -R0.w, c[9].z;\n" |
|
1522 "MAD R2.xyz, R1, R0.x, R2;\n" |
|
1523 "ADD R0.z, R0.w, R1.w;\n" |
|
1524 "MAD R2.w, -R0, R1, R0.z;\n" |
|
1525 "ADD R0.xy, fragment.position, c[7];\n" |
|
1526 "MUL R0.xy, R0, c[5];\n" |
|
1527 "TEX R0, R0, texture[1], 2D;\n" |
|
1528 "ADD R2, R2, -R1;\n" |
|
1529 "DP4 R0.x, R0, c[8];\n" |
|
1530 "MAD result.color, R0.x, R2, R1;\n" |
|
1531 "END\n" |
|
1532 ; |
|
1533 |
|
1534 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE = |
|
1535 "!!ARBfp1.0\n" |
|
1536 "PARAM c[10] = { program.local[0..8],\n" |
|
1537 " { 2, 4 } };\n" |
|
1538 "TEMP R0;\n" |
|
1539 "TEMP R1;\n" |
|
1540 "TEMP R2;\n" |
|
1541 "TEMP R3;\n" |
|
1542 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1543 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1544 "ADD R0.xyz, R0, c[4];\n" |
|
1545 "RCP R0.z, R0.z;\n" |
|
1546 "MUL R0.xy, R0, R0.z;\n" |
|
1547 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1548 "ADD R0.z, R0, R0.w;\n" |
|
1549 "MUL R0.xy, R0, c[0];\n" |
|
1550 "ADD R0.x, R0, R0.y;\n" |
|
1551 "MUL R0.z, -R0, c[1].x;\n" |
|
1552 "MUL R0.y, R0.x, c[9].x;\n" |
|
1553 "MUL R0.z, R0, c[9].y;\n" |
|
1554 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1555 "RSQ R0.z, R0.x;\n" |
|
1556 "MOV R0.x, c[9];\n" |
|
1557 "MUL R0.x, R0, c[1];\n" |
|
1558 "RCP R0.z, R0.z;\n" |
|
1559 "ADD R0.z, -R0.y, R0;\n" |
|
1560 "RCP R0.w, R0.x;\n" |
|
1561 "MUL R1.x, R0.z, R0.w;\n" |
|
1562 "MUL R0.xy, fragment.position, c[6];\n" |
|
1563 "TEX R0, R0, texture[0], 2D;\n" |
|
1564 "TEX R1, R1, texture[2], 1D;\n" |
|
1565 "ADD R2.xyz, R1, R0;\n" |
|
1566 "MUL R3.xyz, R1.w, R0;\n" |
|
1567 "MUL R1.xyz, R1, R0.w;\n" |
|
1568 "MIN R1.xyz, R1, R3;\n" |
|
1569 "MAD R2.xyz, -R1, c[9].x, R2;\n" |
|
1570 "ADD R1.z, R1.w, R0.w;\n" |
|
1571 "MAD R2.w, -R1, R0, R1.z;\n" |
|
1572 "ADD R1.xy, fragment.position, c[7];\n" |
|
1573 "MUL R1.xy, R1, c[5];\n" |
|
1574 "TEX R1, R1, texture[1], 2D;\n" |
|
1575 "ADD R2, R2, -R0;\n" |
|
1576 "DP4 R1.x, R1, c[8];\n" |
|
1577 "MAD result.color, R1.x, R2, R0;\n" |
|
1578 "END\n" |
|
1579 ; |
|
1580 |
|
1581 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION = |
|
1582 "!!ARBfp1.0\n" |
|
1583 "PARAM c[10] = { program.local[0..8],\n" |
|
1584 " { 2, 4, 1 } };\n" |
|
1585 "TEMP R0;\n" |
|
1586 "TEMP R1;\n" |
|
1587 "TEMP R2;\n" |
|
1588 "TEMP R3;\n" |
|
1589 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1590 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1591 "ADD R0.xyz, R0, c[4];\n" |
|
1592 "RCP R0.z, R0.z;\n" |
|
1593 "MUL R0.xy, R0, R0.z;\n" |
|
1594 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1595 "ADD R0.z, R0, R0.w;\n" |
|
1596 "MUL R0.xy, R0, c[0];\n" |
|
1597 "ADD R0.x, R0, R0.y;\n" |
|
1598 "MUL R0.z, -R0, c[1].x;\n" |
|
1599 "MUL R0.y, R0.x, c[9].x;\n" |
|
1600 "MUL R0.z, R0, c[9].y;\n" |
|
1601 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1602 "RSQ R0.z, R0.x;\n" |
|
1603 "MOV R0.x, c[9];\n" |
|
1604 "MUL R0.x, R0, c[1];\n" |
|
1605 "RCP R0.z, R0.z;\n" |
|
1606 "ADD R0.z, -R0.y, R0;\n" |
|
1607 "RCP R0.w, R0.x;\n" |
|
1608 "MUL R1.x, R0.z, R0.w;\n" |
|
1609 "MUL R0.xy, fragment.position, c[6];\n" |
|
1610 "TEX R0, R0, texture[0], 2D;\n" |
|
1611 "TEX R1, R1, texture[2], 1D;\n" |
|
1612 "MUL R2.xyz, R1.w, R0;\n" |
|
1613 "MAD R3.xyz, R1, R0.w, R2;\n" |
|
1614 "MUL R2.xyz, R1, R0;\n" |
|
1615 "MAD R2.xyz, -R2, c[9].x, R3;\n" |
|
1616 "ADD R2.w, -R0, c[9].z;\n" |
|
1617 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
1618 "ADD R2.x, -R1.w, c[9].z;\n" |
|
1619 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
1620 "ADD R1.z, R1.w, R0.w;\n" |
|
1621 "MAD R2.w, -R1, R0, R1.z;\n" |
|
1622 "ADD R1.xy, fragment.position, c[7];\n" |
|
1623 "MUL R1.xy, R1, c[5];\n" |
|
1624 "TEX R1, R1, texture[1], 2D;\n" |
|
1625 "ADD R2, R2, -R0;\n" |
|
1626 "DP4 R1.x, R1, c[8];\n" |
|
1627 "MAD result.color, R1.x, R2, R0;\n" |
|
1628 "END\n" |
|
1629 ; |
|
1630 |
|
1631 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = |
|
1632 "!!ARBfp1.0\n" |
|
1633 "PARAM c[9] = { program.local[0..7],\n" |
|
1634 " { 2, 4, 1 } };\n" |
|
1635 "TEMP R0;\n" |
|
1636 "TEMP R1;\n" |
|
1637 "TEMP R2;\n" |
|
1638 "TEMP R3;\n" |
|
1639 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1640 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1641 "ADD R0.xyz, R0, c[4];\n" |
|
1642 "RCP R0.z, R0.z;\n" |
|
1643 "MUL R0.xy, R0, R0.z;\n" |
|
1644 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1645 "ADD R0.z, R0, R0.w;\n" |
|
1646 "MUL R0.xy, R0, c[0];\n" |
|
1647 "ADD R0.x, R0, R0.y;\n" |
|
1648 "MUL R0.z, -R0, c[1].x;\n" |
|
1649 "MUL R0.y, R0.x, c[8].x;\n" |
|
1650 "MUL R0.z, R0, c[8].y;\n" |
|
1651 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1652 "RSQ R0.x, R0.x;\n" |
|
1653 "RCP R0.z, R0.x;\n" |
|
1654 "ADD R0.y, -R0, R0.z;\n" |
|
1655 "MUL R0.zw, fragment.position.xyxy, c[7].xyxy;\n" |
|
1656 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
1657 "MUL R2.xyz, R1, c[5].y;\n" |
|
1658 "MOV R0.x, c[8];\n" |
|
1659 "MUL R0.x, R0, c[1];\n" |
|
1660 "RCP R0.x, R0.x;\n" |
|
1661 "MUL R0.x, R0.y, R0;\n" |
|
1662 "TEX R0, R0, texture[1], 1D;\n" |
|
1663 "MUL R3.xyz, R0.w, R2;\n" |
|
1664 "MUL R2.xyz, R0, c[5].x;\n" |
|
1665 "MAD R2.xyz, R1.w, R2, R3;\n" |
|
1666 "ADD R2.w, -R1, c[8].z;\n" |
|
1667 "MUL R0.xyz, R0, c[6].y;\n" |
|
1668 "MAD R0.xyz, R2.w, R0, R2;\n" |
|
1669 "ADD R2.x, -R0.w, c[8].z;\n" |
|
1670 "MUL R1.xyz, R1, c[6].z;\n" |
|
1671 "MAD result.color.xyz, R2.x, R1, R0;\n" |
|
1672 "MUL R0.x, R0.w, R1.w;\n" |
|
1673 "MUL R0.z, R1.w, R2.x;\n" |
|
1674 "MUL R0.y, R0.w, R2.w;\n" |
|
1675 "DP3 result.color.w, R0, c[6];\n" |
|
1676 "END\n" |
|
1677 ; |
|
1678 |
|
1679 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY_NOMASK = |
|
1680 "!!ARBfp1.0\n" |
|
1681 "PARAM c[7] = { program.local[0..5],\n" |
|
1682 " { 2, 4, 1 } };\n" |
|
1683 "TEMP R0;\n" |
|
1684 "TEMP R1;\n" |
|
1685 "TEMP R2;\n" |
|
1686 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1687 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1688 "ADD R0.xyz, R0, c[4];\n" |
|
1689 "RCP R0.z, R0.z;\n" |
|
1690 "MUL R0.xy, R0, R0.z;\n" |
|
1691 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1692 "ADD R0.z, R0, R0.w;\n" |
|
1693 "MUL R0.xy, R0, c[0];\n" |
|
1694 "ADD R0.x, R0, R0.y;\n" |
|
1695 "MUL R0.z, -R0, c[1].x;\n" |
|
1696 "MUL R0.y, R0.x, c[6].x;\n" |
|
1697 "MUL R0.z, R0, c[6].y;\n" |
|
1698 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1699 "RSQ R0.x, R0.x;\n" |
|
1700 "RCP R0.z, R0.x;\n" |
|
1701 "ADD R0.y, -R0, R0.z;\n" |
|
1702 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
1703 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
1704 "MOV R0.x, c[6];\n" |
|
1705 "MUL R0.x, R0, c[1];\n" |
|
1706 "RCP R0.x, R0.x;\n" |
|
1707 "MUL R0.x, R0.y, R0;\n" |
|
1708 "TEX R0, R0, texture[1], 1D;\n" |
|
1709 "ADD R2.x, -R1.w, c[6].z;\n" |
|
1710 "MUL R2.xyz, R0, R2.x;\n" |
|
1711 "MAD R0.xyz, R0, R1, R2;\n" |
|
1712 "ADD R2.x, R0.w, R1.w;\n" |
|
1713 "ADD R2.y, -R0.w, c[6].z;\n" |
|
1714 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
1715 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
1716 "END\n" |
|
1717 ; |
|
1718 |
|
1719 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN_NOMASK = |
|
1720 "!!ARBfp1.0\n" |
|
1721 "PARAM c[7] = { program.local[0..5],\n" |
|
1722 " { 2, 4 } };\n" |
|
1723 "TEMP R0;\n" |
|
1724 "TEMP R1;\n" |
|
1725 "TEMP R2;\n" |
|
1726 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1727 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1728 "ADD R0.xyz, R0, c[4];\n" |
|
1729 "RCP R0.z, R0.z;\n" |
|
1730 "MUL R0.xy, R0, R0.z;\n" |
|
1731 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1732 "ADD R0.z, R0, R0.w;\n" |
|
1733 "MUL R0.xy, R0, c[0];\n" |
|
1734 "ADD R0.x, R0, R0.y;\n" |
|
1735 "MUL R0.z, -R0, c[1].x;\n" |
|
1736 "MUL R0.y, R0.x, c[6].x;\n" |
|
1737 "MUL R0.z, R0, c[6].y;\n" |
|
1738 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1739 "RSQ R0.z, R0.x;\n" |
|
1740 "MOV R0.x, c[6];\n" |
|
1741 "MUL R0.w, R0.x, c[1].x;\n" |
|
1742 "RCP R0.z, R0.z;\n" |
|
1743 "ADD R0.x, -R0.y, R0.z;\n" |
|
1744 "RCP R0.y, R0.w;\n" |
|
1745 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
1746 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
1747 "MUL R0.x, R0, R0.y;\n" |
|
1748 "TEX R0, R0, texture[1], 1D;\n" |
|
1749 "ADD R2, R0, R1;\n" |
|
1750 "MAD result.color, -R0, R1, R2;\n" |
|
1751 "END\n" |
|
1752 ; |
|
1753 |
|
1754 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY_NOMASK = |
|
1755 "!!ARBfp1.0\n" |
|
1756 "PARAM c[7] = { program.local[0..5],\n" |
|
1757 " { 2, 4, 1 } };\n" |
|
1758 "TEMP R0;\n" |
|
1759 "TEMP R1;\n" |
|
1760 "TEMP R2;\n" |
|
1761 "TEMP R3;\n" |
|
1762 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1763 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1764 "ADD R0.xyz, R0, c[4];\n" |
|
1765 "RCP R0.z, R0.z;\n" |
|
1766 "MUL R0.xy, R0, R0.z;\n" |
|
1767 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1768 "ADD R0.z, R0, R0.w;\n" |
|
1769 "MUL R0.xy, R0, c[0];\n" |
|
1770 "ADD R0.x, R0, R0.y;\n" |
|
1771 "MUL R0.y, R0.x, c[6].x;\n" |
|
1772 "MOV R0.x, c[6];\n" |
|
1773 "MUL R0.z, -R0, c[1].x;\n" |
|
1774 "MUL R0.z, R0, c[6].y;\n" |
|
1775 "MAD R0.z, R0.y, R0.y, -R0;\n" |
|
1776 "MUL R1.xy, fragment.position, c[5];\n" |
|
1777 "TEX R1, R1, texture[0], 2D;\n" |
|
1778 "MUL R0.w, R0.x, c[1].x;\n" |
|
1779 "RSQ R0.z, R0.z;\n" |
|
1780 "RCP R0.x, R0.z;\n" |
|
1781 "ADD R2.w, -R1, c[6].z;\n" |
|
1782 "RCP R0.z, R0.w;\n" |
|
1783 "ADD R0.x, -R0.y, R0;\n" |
|
1784 "MUL R0.x, R0, R0.z;\n" |
|
1785 "TEX R0, R0, texture[1], 1D;\n" |
|
1786 "ADD R3.xyz, R0.w, -R0;\n" |
|
1787 "ADD R2.xyz, R1.w, -R1;\n" |
|
1788 "MUL R2.xyz, R2, R3;\n" |
|
1789 "MUL R2.xyz, R2, c[6].x;\n" |
|
1790 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
1791 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
1792 "MUL R3.xyz, R0, R2.w;\n" |
|
1793 "MUL R0.xyz, R0, R1;\n" |
|
1794 "ADD R2.w, -R0, c[6].z;\n" |
|
1795 "MAD R0.xyz, R0, c[6].x, R3;\n" |
|
1796 "MAD R0.xyz, R1, R2.w, R0;\n" |
|
1797 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
1798 "MUL R1.xyz, R1, c[6].x;\n" |
|
1799 "ADD R2.w, R0, R1;\n" |
|
1800 "ADD R2.xyz, R2, -R0;\n" |
|
1801 "SGE R1.xyz, R1, R1.w;\n" |
|
1802 "MAD result.color.xyz, R1, R2, R0;\n" |
|
1803 "MAD result.color.w, -R0, R1, R2;\n" |
|
1804 "END\n" |
|
1805 ; |
|
1806 |
|
1807 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN_NOMASK = |
|
1808 "!!ARBfp1.0\n" |
|
1809 "PARAM c[7] = { program.local[0..5],\n" |
|
1810 " { 2, 4, 1 } };\n" |
|
1811 "TEMP R0;\n" |
|
1812 "TEMP R1;\n" |
|
1813 "TEMP R2;\n" |
|
1814 "TEMP R3;\n" |
|
1815 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1816 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1817 "ADD R0.xyz, R0, c[4];\n" |
|
1818 "RCP R0.z, R0.z;\n" |
|
1819 "MUL R0.xy, R0, R0.z;\n" |
|
1820 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1821 "ADD R0.z, R0, R0.w;\n" |
|
1822 "MUL R0.xy, R0, c[0];\n" |
|
1823 "ADD R0.x, R0, R0.y;\n" |
|
1824 "MUL R0.z, -R0, c[1].x;\n" |
|
1825 "MUL R0.y, R0.x, c[6].x;\n" |
|
1826 "MUL R0.z, R0, c[6].y;\n" |
|
1827 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1828 "RSQ R0.z, R0.x;\n" |
|
1829 "MOV R0.x, c[6];\n" |
|
1830 "MUL R0.w, R0.x, c[1].x;\n" |
|
1831 "RCP R0.z, R0.z;\n" |
|
1832 "ADD R0.x, -R0.y, R0.z;\n" |
|
1833 "RCP R0.y, R0.w;\n" |
|
1834 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
1835 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
1836 "MUL R0.x, R0, R0.y;\n" |
|
1837 "TEX R0, R0, texture[1], 1D;\n" |
|
1838 "MUL R2.xyz, R0, R1.w;\n" |
|
1839 "MUL R3.xyz, R0.w, R1;\n" |
|
1840 "MIN R2.xyz, R2, R3;\n" |
|
1841 "ADD R2.w, -R1, c[6].z;\n" |
|
1842 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
1843 "ADD R2.x, R0.w, R1.w;\n" |
|
1844 "ADD R2.y, -R0.w, c[6].z;\n" |
|
1845 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
1846 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
1847 "END\n" |
|
1848 ; |
|
1849 |
|
1850 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN_NOMASK = |
|
1851 "!!ARBfp1.0\n" |
|
1852 "PARAM c[7] = { program.local[0..5],\n" |
|
1853 " { 2, 4, 1 } };\n" |
|
1854 "TEMP R0;\n" |
|
1855 "TEMP R1;\n" |
|
1856 "TEMP R2;\n" |
|
1857 "TEMP R3;\n" |
|
1858 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1859 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1860 "ADD R0.xyz, R0, c[4];\n" |
|
1861 "RCP R0.z, R0.z;\n" |
|
1862 "MUL R0.xy, R0, R0.z;\n" |
|
1863 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1864 "ADD R0.z, R0, R0.w;\n" |
|
1865 "MUL R0.xy, R0, c[0];\n" |
|
1866 "ADD R0.x, R0, R0.y;\n" |
|
1867 "MUL R0.z, -R0, c[1].x;\n" |
|
1868 "MUL R0.y, R0.x, c[6].x;\n" |
|
1869 "MUL R0.z, R0, c[6].y;\n" |
|
1870 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1871 "RSQ R0.z, R0.x;\n" |
|
1872 "MOV R0.x, c[6];\n" |
|
1873 "MUL R0.w, R0.x, c[1].x;\n" |
|
1874 "RCP R0.z, R0.z;\n" |
|
1875 "ADD R0.x, -R0.y, R0.z;\n" |
|
1876 "RCP R0.y, R0.w;\n" |
|
1877 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
1878 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
1879 "MUL R0.x, R0, R0.y;\n" |
|
1880 "TEX R0, R0, texture[1], 1D;\n" |
|
1881 "MUL R2.xyz, R0, R1.w;\n" |
|
1882 "MUL R3.xyz, R0.w, R1;\n" |
|
1883 "MAX R2.xyz, R2, R3;\n" |
|
1884 "ADD R2.w, -R1, c[6].z;\n" |
|
1885 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
1886 "ADD R2.x, R0.w, R1.w;\n" |
|
1887 "ADD R2.y, -R0.w, c[6].z;\n" |
|
1888 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
1889 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
1890 "END\n" |
|
1891 ; |
|
1892 |
|
1893 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE_NOMASK = |
|
1894 "!!ARBfp1.0\n" |
|
1895 "PARAM c[7] = { program.local[0..5],\n" |
|
1896 " { 2, 4, 1, 1e-006 } };\n" |
|
1897 "TEMP R0;\n" |
|
1898 "TEMP R1;\n" |
|
1899 "TEMP R2;\n" |
|
1900 "TEMP R3;\n" |
|
1901 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1902 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1903 "ADD R0.xyz, R0, c[4];\n" |
|
1904 "RCP R0.z, R0.z;\n" |
|
1905 "MUL R0.xy, R0, R0.z;\n" |
|
1906 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1907 "ADD R0.z, R0, R0.w;\n" |
|
1908 "MUL R0.xy, R0, c[0];\n" |
|
1909 "ADD R0.x, R0, R0.y;\n" |
|
1910 "MUL R0.y, R0.x, c[6].x;\n" |
|
1911 "MOV R0.x, c[6];\n" |
|
1912 "MUL R0.z, -R0, c[1].x;\n" |
|
1913 "MUL R0.z, R0, c[6].y;\n" |
|
1914 "MAD R0.z, R0.y, R0.y, -R0;\n" |
|
1915 "MUL R0.w, R0.x, c[1].x;\n" |
|
1916 "RSQ R0.z, R0.z;\n" |
|
1917 "RCP R0.x, R0.z;\n" |
|
1918 "RCP R0.z, R0.w;\n" |
|
1919 "ADD R0.x, -R0.y, R0;\n" |
|
1920 "MUL R0.x, R0, R0.z;\n" |
|
1921 "TEX R0, R0, texture[1], 1D;\n" |
|
1922 "MAX R1.x, R0.w, c[6].w;\n" |
|
1923 "RCP R1.x, R1.x;\n" |
|
1924 "MAD R1.xyz, -R0, R1.x, c[6].z;\n" |
|
1925 "MAX R2.xyz, R1, c[6].w;\n" |
|
1926 "MUL R1.xy, fragment.position, c[5];\n" |
|
1927 "TEX R1, R1, texture[0], 2D;\n" |
|
1928 "ADD R2.w, -R0, c[6].z;\n" |
|
1929 "MUL R3.xyz, R1, R2.w;\n" |
|
1930 "ADD R2.w, -R1, c[6].z;\n" |
|
1931 "MAD R3.xyz, R0, R2.w, R3;\n" |
|
1932 "MUL R1.xyz, R0.w, R1;\n" |
|
1933 "MAD R0.xyz, R0, R1.w, R1;\n" |
|
1934 "MUL R2.w, R0, R1;\n" |
|
1935 "RCP R2.x, R2.x;\n" |
|
1936 "RCP R2.y, R2.y;\n" |
|
1937 "RCP R2.z, R2.z;\n" |
|
1938 "MAD R2.xyz, R1, R2, R3;\n" |
|
1939 "MAD R3.xyz, R0.w, R1.w, R3;\n" |
|
1940 "ADD R1.x, R0.w, R1.w;\n" |
|
1941 "ADD R3.xyz, R3, -R2;\n" |
|
1942 "SGE R0.xyz, R0, R2.w;\n" |
|
1943 "MAD result.color.xyz, R0, R3, R2;\n" |
|
1944 "MAD result.color.w, -R0, R1, R1.x;\n" |
|
1945 "END\n" |
|
1946 ; |
|
1947 |
|
1948 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN_NOMASK = |
|
1949 "!!ARBfp1.0\n" |
|
1950 "PARAM c[7] = { program.local[0..5],\n" |
|
1951 " { 2, 4, 1, 9.9999997e-006 } };\n" |
|
1952 "TEMP R0;\n" |
|
1953 "TEMP R1;\n" |
|
1954 "TEMP R2;\n" |
|
1955 "TEMP R3;\n" |
|
1956 "TEMP R4;\n" |
|
1957 "TEMP R5;\n" |
|
1958 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
1959 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
1960 "ADD R0.xyz, R0, c[4];\n" |
|
1961 "RCP R0.z, R0.z;\n" |
|
1962 "MUL R0.xy, R0, R0.z;\n" |
|
1963 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
1964 "ADD R0.z, R0, R0.w;\n" |
|
1965 "MUL R0.xy, R0, c[0];\n" |
|
1966 "ADD R0.x, R0, R0.y;\n" |
|
1967 "MUL R0.z, -R0, c[1].x;\n" |
|
1968 "MUL R0.y, R0.x, c[6].x;\n" |
|
1969 "MUL R0.z, R0, c[6].y;\n" |
|
1970 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
1971 "RSQ R0.z, R0.x;\n" |
|
1972 "MOV R0.x, c[6];\n" |
|
1973 "MUL R0.w, R0.x, c[1].x;\n" |
|
1974 "RCP R0.z, R0.z;\n" |
|
1975 "ADD R0.x, -R0.y, R0.z;\n" |
|
1976 "RCP R0.y, R0.w;\n" |
|
1977 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
1978 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
1979 "MUL R0.x, R0, R0.y;\n" |
|
1980 "TEX R0, R0, texture[1], 1D;\n" |
|
1981 "MUL R2.xyz, R0.w, R1;\n" |
|
1982 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
1983 "ADD R2.w, -R1, c[6].z;\n" |
|
1984 "MAD R2.xyz, -R0.w, R1.w, R3;\n" |
|
1985 "MUL R4.xyz, R0.w, R2;\n" |
|
1986 "MAX R2.xyz, R0, c[6].w;\n" |
|
1987 "MUL R5.xyz, R0, R2.w;\n" |
|
1988 "ADD R3.w, -R0, c[6].z;\n" |
|
1989 "RCP R2.x, R2.x;\n" |
|
1990 "RCP R2.y, R2.y;\n" |
|
1991 "RCP R2.z, R2.z;\n" |
|
1992 "MAD R2.xyz, R4, R2, R5;\n" |
|
1993 "MUL R4.xyz, R1, R3.w;\n" |
|
1994 "MAD R1.xyz, R1, R3.w, R2;\n" |
|
1995 "MAD R0.xyz, R0, R2.w, R4;\n" |
|
1996 "MUL R2.x, R0.w, R1.w;\n" |
|
1997 "ADD R2.w, R0, R1;\n" |
|
1998 "ADD R1.xyz, R1, -R0;\n" |
|
1999 "SGE R2.xyz, R3, R2.x;\n" |
|
2000 "MAD result.color.xyz, R2, R1, R0;\n" |
|
2001 "MAD result.color.w, -R0, R1, R2;\n" |
|
2002 "END\n" |
|
2003 ; |
|
2004 |
|
2005 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT_NOMASK = |
|
2006 "!!ARBfp1.0\n" |
|
2007 "PARAM c[7] = { program.local[0..5],\n" |
|
2008 " { 2, 4, 1 } };\n" |
|
2009 "TEMP R0;\n" |
|
2010 "TEMP R1;\n" |
|
2011 "TEMP R2;\n" |
|
2012 "TEMP R3;\n" |
|
2013 "TEMP R4;\n" |
|
2014 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
2015 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
2016 "ADD R0.xyz, R0, c[4];\n" |
|
2017 "RCP R0.z, R0.z;\n" |
|
2018 "MUL R0.xy, R0, R0.z;\n" |
|
2019 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
2020 "ADD R0.z, R0, R0.w;\n" |
|
2021 "MUL R0.xy, R0, c[0];\n" |
|
2022 "ADD R0.x, R0, R0.y;\n" |
|
2023 "MUL R0.y, R0.x, c[6].x;\n" |
|
2024 "MOV R0.x, c[6];\n" |
|
2025 "MUL R0.z, -R0, c[1].x;\n" |
|
2026 "MUL R0.z, R0, c[6].y;\n" |
|
2027 "MAD R0.z, R0.y, R0.y, -R0;\n" |
|
2028 "MUL R1.xy, fragment.position, c[5];\n" |
|
2029 "TEX R1, R1, texture[0], 2D;\n" |
|
2030 "MUL R0.w, R0.x, c[1].x;\n" |
|
2031 "RSQ R0.z, R0.z;\n" |
|
2032 "RCP R0.x, R0.z;\n" |
|
2033 "ADD R2.w, -R1, c[6].z;\n" |
|
2034 "RCP R0.z, R0.w;\n" |
|
2035 "ADD R0.x, -R0.y, R0;\n" |
|
2036 "MUL R0.x, R0, R0.z;\n" |
|
2037 "TEX R0, R0, texture[1], 1D;\n" |
|
2038 "ADD R3.xyz, R0.w, -R0;\n" |
|
2039 "ADD R2.xyz, R1.w, -R1;\n" |
|
2040 "MUL R2.xyz, R2, R3;\n" |
|
2041 "MUL R2.xyz, R2, c[6].x;\n" |
|
2042 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
2043 "MUL R4.xyz, R0, R2.w;\n" |
|
2044 "MUL R3.xyz, R0, R1;\n" |
|
2045 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
2046 "ADD R2.w, -R0, c[6].z;\n" |
|
2047 "MUL R0.xyz, R0, c[6].x;\n" |
|
2048 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
2049 "MAD R3.xyz, R3, c[6].x, R4;\n" |
|
2050 "MAD R1.xyz, R1, R2.w, R3;\n" |
|
2051 "ADD R2.w, R0, R1;\n" |
|
2052 "ADD R2.xyz, R2, -R1;\n" |
|
2053 "SGE R0.xyz, R0, R0.w;\n" |
|
2054 "MAD result.color.xyz, R0, R2, R1;\n" |
|
2055 "MAD result.color.w, -R0, R1, R2;\n" |
|
2056 "END\n" |
|
2057 ; |
|
2058 |
|
2059 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK = |
|
2060 "!!ARBfp1.0\n" |
|
2061 "PARAM c[8] = { program.local[0..5],\n" |
|
2062 " { 2, 4, 1, 9.9999997e-006 },\n" |
|
2063 " { 8, 3 } };\n" |
|
2064 "TEMP R0;\n" |
|
2065 "TEMP R1;\n" |
|
2066 "TEMP R2;\n" |
|
2067 "TEMP R3;\n" |
|
2068 "TEMP R4;\n" |
|
2069 "TEMP R5;\n" |
|
2070 "TEMP R6;\n" |
|
2071 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
2072 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
2073 "ADD R0.xyz, R0, c[4];\n" |
|
2074 "RCP R0.z, R0.z;\n" |
|
2075 "MUL R1.xy, fragment.position, c[5];\n" |
|
2076 "TEX R1, R1, texture[0], 2D;\n" |
|
2077 "MAX R0.w, R1, c[6];\n" |
|
2078 "RCP R2.w, R0.w;\n" |
|
2079 "MUL R5.xyz, R1, R2.w;\n" |
|
2080 "MUL R0.xy, R0, R0.z;\n" |
|
2081 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
2082 "ADD R0.z, R0, R0.w;\n" |
|
2083 "MUL R0.xy, R0, c[0];\n" |
|
2084 "ADD R0.x, R0, R0.y;\n" |
|
2085 "MUL R0.y, R0.x, c[6].x;\n" |
|
2086 "MOV R0.x, c[6];\n" |
|
2087 "RSQ R2.x, R5.x;\n" |
|
2088 "RSQ R2.z, R5.z;\n" |
|
2089 "RSQ R2.y, R5.y;\n" |
|
2090 "MUL R0.z, -R0, c[1].x;\n" |
|
2091 "MUL R0.z, R0, c[6].y;\n" |
|
2092 "MAD R0.z, R0.y, R0.y, -R0;\n" |
|
2093 "MUL R0.w, R0.x, c[1].x;\n" |
|
2094 "RSQ R0.z, R0.z;\n" |
|
2095 "RCP R0.x, R0.z;\n" |
|
2096 "RCP R0.z, R0.w;\n" |
|
2097 "ADD R0.x, -R0.y, R0;\n" |
|
2098 "MUL R0.x, R0, R0.z;\n" |
|
2099 "TEX R0, R0, texture[1], 1D;\n" |
|
2100 "MAD R3.xyz, R0, c[6].x, -R0.w;\n" |
|
2101 "MAD R6.xyz, -R5, c[7].x, c[7].y;\n" |
|
2102 "RCP R2.x, R2.x;\n" |
|
2103 "RCP R2.z, R2.z;\n" |
|
2104 "RCP R2.y, R2.y;\n" |
|
2105 "MAD R2.xyz, R1.w, R2, -R1;\n" |
|
2106 "MUL R2.xyz, R3, R2;\n" |
|
2107 "MAD R4.xyz, R0.w, R1, R2;\n" |
|
2108 "MAD R2.xyz, -R1, R2.w, c[6].z;\n" |
|
2109 "MUL R5.xyz, R2, R3;\n" |
|
2110 "MAD R2.xyz, -R2, R3, R0.w;\n" |
|
2111 "MAD R6.xyz, -R5, R6, R0.w;\n" |
|
2112 "MAD R5.xyz, -R1, R6, R4;\n" |
|
2113 "MUL R3.xyz, R0, c[6].x;\n" |
|
2114 "MUL R4.xyz, R1, c[7].x;\n" |
|
2115 "MUL R6.xyz, R1, R6;\n" |
|
2116 "SGE R4.xyz, R4, R1.w;\n" |
|
2117 "MAD R4.xyz, R4, R5, R6;\n" |
|
2118 "MAD R4.xyz, -R1, R2, R4;\n" |
|
2119 "MUL R2.xyz, R1, R2;\n" |
|
2120 "SGE R3.xyz, R3, R0.w;\n" |
|
2121 "MAD R2.xyz, R3, R4, R2;\n" |
|
2122 "ADD R2.w, -R1, c[6].z;\n" |
|
2123 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
2124 "ADD R0.x, R0.w, R1.w;\n" |
|
2125 "ADD R0.y, -R0.w, c[6].z;\n" |
|
2126 "MAD result.color.xyz, R1, R0.y, R2;\n" |
|
2127 "MAD result.color.w, -R0, R1, R0.x;\n" |
|
2128 "END\n" |
|
2129 ; |
|
2130 |
|
2131 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE_NOMASK = |
|
2132 "!!ARBfp1.0\n" |
|
2133 "PARAM c[7] = { program.local[0..5],\n" |
|
2134 " { 2, 4 } };\n" |
|
2135 "TEMP R0;\n" |
|
2136 "TEMP R1;\n" |
|
2137 "TEMP R2;\n" |
|
2138 "TEMP R3;\n" |
|
2139 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
2140 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
2141 "ADD R0.xyz, R0, c[4];\n" |
|
2142 "RCP R0.z, R0.z;\n" |
|
2143 "MUL R0.xy, R0, R0.z;\n" |
|
2144 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
2145 "ADD R0.z, R0, R0.w;\n" |
|
2146 "MUL R0.xy, R0, c[0];\n" |
|
2147 "ADD R0.x, R0, R0.y;\n" |
|
2148 "MUL R0.z, -R0, c[1].x;\n" |
|
2149 "MUL R0.y, R0.x, c[6].x;\n" |
|
2150 "MUL R0.z, R0, c[6].y;\n" |
|
2151 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
2152 "RSQ R0.z, R0.x;\n" |
|
2153 "MOV R0.x, c[6];\n" |
|
2154 "MUL R0.w, R0.x, c[1].x;\n" |
|
2155 "RCP R0.z, R0.z;\n" |
|
2156 "ADD R0.x, -R0.y, R0.z;\n" |
|
2157 "RCP R0.y, R0.w;\n" |
|
2158 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
2159 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
2160 "MUL R0.x, R0, R0.y;\n" |
|
2161 "TEX R0, R0, texture[1], 1D;\n" |
|
2162 "MUL R2.xyz, R0, R1.w;\n" |
|
2163 "MUL R3.xyz, R0.w, R1;\n" |
|
2164 "ADD R0.xyz, R0, R1;\n" |
|
2165 "MIN R2.xyz, R2, R3;\n" |
|
2166 "ADD R1.x, R0.w, R1.w;\n" |
|
2167 "MAD result.color.xyz, -R2, c[6].x, R0;\n" |
|
2168 "MAD result.color.w, -R0, R1, R1.x;\n" |
|
2169 "END\n" |
|
2170 ; |
|
2171 |
|
2172 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION_NOMASK = |
|
2173 "!!ARBfp1.0\n" |
|
2174 "PARAM c[7] = { program.local[0..5],\n" |
|
2175 " { 2, 4, 1 } };\n" |
|
2176 "TEMP R0;\n" |
|
2177 "TEMP R1;\n" |
|
2178 "TEMP R2;\n" |
|
2179 "TEMP R3;\n" |
|
2180 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
2181 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
2182 "ADD R0.xyz, R0, c[4];\n" |
|
2183 "RCP R0.z, R0.z;\n" |
|
2184 "MUL R0.xy, R0, R0.z;\n" |
|
2185 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
2186 "ADD R0.z, R0, R0.w;\n" |
|
2187 "MUL R0.xy, R0, c[0];\n" |
|
2188 "ADD R0.x, R0, R0.y;\n" |
|
2189 "MUL R0.z, -R0, c[1].x;\n" |
|
2190 "MUL R0.y, R0.x, c[6].x;\n" |
|
2191 "MUL R0.z, R0, c[6].y;\n" |
|
2192 "MAD R0.x, R0.y, R0.y, -R0.z;\n" |
|
2193 "RSQ R0.z, R0.x;\n" |
|
2194 "MOV R0.x, c[6];\n" |
|
2195 "MUL R0.w, R0.x, c[1].x;\n" |
|
2196 "RCP R0.z, R0.z;\n" |
|
2197 "ADD R0.x, -R0.y, R0.z;\n" |
|
2198 "RCP R0.y, R0.w;\n" |
|
2199 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
2200 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
2201 "MUL R0.x, R0, R0.y;\n" |
|
2202 "TEX R0, R0, texture[1], 1D;\n" |
|
2203 "MUL R2.xyz, R0.w, R1;\n" |
|
2204 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
2205 "MUL R2.xyz, R0, R1;\n" |
|
2206 "MAD R2.xyz, -R2, c[6].x, R3;\n" |
|
2207 "ADD R2.w, -R1, c[6].z;\n" |
|
2208 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
2209 "ADD R2.x, R0.w, R1.w;\n" |
|
2210 "ADD R2.y, -R0.w, c[6].z;\n" |
|
2211 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
2212 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
2213 "END\n" |
|
2214 ; |
|
2215 |
|
2216 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_MASK = |
|
2217 "!!ARBfp1.0\n" |
|
2218 "PARAM c[9] = { program.local[0..7],\n" |
|
2219 " { 2, 4 } };\n" |
|
2220 "TEMP R0;\n" |
|
2221 "TEMP R1;\n" |
|
2222 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
2223 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
2224 "ADD R0.xyz, R0, c[4];\n" |
|
2225 "RCP R0.z, R0.z;\n" |
|
2226 "MUL R0.xy, R0, R0.z;\n" |
|
2227 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
2228 "ADD R0.z, R0, R0.w;\n" |
|
2229 "MUL R0.xy, R0, c[0];\n" |
|
2230 "ADD R0.x, R0, R0.y;\n" |
|
2231 "MUL R0.z, -R0, c[1].x;\n" |
|
2232 "MUL R0.y, R0.z, c[8];\n" |
|
2233 "MUL R0.x, R0, c[8];\n" |
|
2234 "MAD R0.y, R0.x, R0.x, -R0;\n" |
|
2235 "RSQ R0.y, R0.y;\n" |
|
2236 "RCP R0.y, R0.y;\n" |
|
2237 "ADD R1.x, -R0, R0.y;\n" |
|
2238 "MOV R0.x, c[8];\n" |
|
2239 "MUL R0.x, R0, c[1];\n" |
|
2240 "RCP R1.y, R0.x;\n" |
|
2241 "ADD R0.zw, fragment.position.xyxy, c[6].xyxy;\n" |
|
2242 "MUL R0.zw, R0, c[5].xyxy;\n" |
|
2243 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
2244 "MUL R1.x, R1, R1.y;\n" |
|
2245 "DP4 R1.y, R0, c[7];\n" |
|
2246 "TEX R0, R1, texture[1], 1D;\n" |
|
2247 "MUL result.color, R0, R1.y;\n" |
|
2248 "END\n" |
|
2249 ; |
|
2250 |
|
2251 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_NOMASK = |
|
2252 "!!ARBfp1.0\n" |
|
2253 "PARAM c[6] = { program.local[0..4],\n" |
|
2254 " { 2, 4 } };\n" |
|
2255 "TEMP R0;\n" |
|
2256 "MUL R0.xyz, fragment.position.y, c[3];\n" |
|
2257 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" |
|
2258 "ADD R0.xyz, R0, c[4];\n" |
|
2259 "RCP R0.z, R0.z;\n" |
|
2260 "MUL R0.xy, R0, R0.z;\n" |
|
2261 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" |
|
2262 "MUL R0.xy, R0, c[0];\n" |
|
2263 "ADD R0.z, R0, R0.w;\n" |
|
2264 "ADD R0.x, R0, R0.y;\n" |
|
2265 "MUL R0.z, -R0, c[1].x;\n" |
|
2266 "MUL R0.y, R0.z, c[5];\n" |
|
2267 "MUL R0.x, R0, c[5];\n" |
|
2268 "MAD R0.z, R0.x, R0.x, -R0.y;\n" |
|
2269 "MOV R0.y, c[5].x;\n" |
|
2270 "RSQ R0.z, R0.z;\n" |
|
2271 "MUL R0.w, R0.y, c[1].x;\n" |
|
2272 "RCP R0.y, R0.z;\n" |
|
2273 "RCP R0.z, R0.w;\n" |
|
2274 "ADD R0.x, -R0, R0.y;\n" |
|
2275 "MUL R0.x, R0, R0.z;\n" |
|
2276 "TEX result.color, R0, texture[0], 1D;\n" |
|
2277 "END\n" |
|
2278 ; |
|
2279 |
|
2280 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = |
|
2281 "!!ARBfp1.0\n" |
|
2282 "PARAM c[13] = { program.local[0..9],\n" |
|
2283 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
2284 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
2285 " { 0.33299461, 0.99999559, 1 } };\n" |
|
2286 "TEMP R0;\n" |
|
2287 "TEMP R1;\n" |
|
2288 "TEMP R2;\n" |
|
2289 "TEMP R3;\n" |
|
2290 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
2291 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
2292 "ADD R0.xyz, R0, c[3];\n" |
|
2293 "RCP R0.z, R0.z;\n" |
|
2294 "MUL R0.xy, R0, R0.z;\n" |
|
2295 "ABS R0.z, R0.x;\n" |
|
2296 "ABS R0.w, R0.y;\n" |
|
2297 "ADD R0.w, R0, -R0.z;\n" |
|
2298 "ADD R1.x, R0.y, c[10].y;\n" |
|
2299 "ABS R0.w, R0;\n" |
|
2300 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
2301 "ABS R0.w, -R0.y;\n" |
|
2302 "MAX R1.x, R0.z, R0.w;\n" |
|
2303 "RCP R1.y, R1.x;\n" |
|
2304 "MIN R1.x, R0.z, R0.w;\n" |
|
2305 "MUL R1.x, R1, R1.y;\n" |
|
2306 "MUL R1.y, R1.x, R1.x;\n" |
|
2307 "MAD R1.z, R1.y, c[11].x, c[11].y;\n" |
|
2308 "MAD R1.z, R1, R1.y, -c[11];\n" |
|
2309 "MAD R1.z, R1, R1.y, c[11].w;\n" |
|
2310 "MAD R1.z, R1, R1.y, -c[12].x;\n" |
|
2311 "MAD R1.y, R1.z, R1, c[12];\n" |
|
2312 "MUL R1.x, R1.y, R1;\n" |
|
2313 "ADD R1.y, -R1.x, c[10].w;\n" |
|
2314 "ADD R0.z, -R0, R0.w;\n" |
|
2315 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
2316 "ADD R0.w, -R0.z, c[10].z;\n" |
|
2317 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
2318 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
2319 "ADD R0.x, R0, c[0];\n" |
|
2320 "MUL R1.x, R0, c[10];\n" |
|
2321 "FLR R1.y, R1.x;\n" |
|
2322 "MUL R0.xy, fragment.position, c[7];\n" |
|
2323 "TEX R0, R0, texture[0], 2D;\n" |
|
2324 "ADD R1.x, R1, -R1.y;\n" |
|
2325 "TEX R1, R1, texture[2], 1D;\n" |
|
2326 "MUL R2.xyz, R0, c[4].y;\n" |
|
2327 "MUL R3.xyz, R1.w, R2;\n" |
|
2328 "MUL R2.xyz, R1, c[4].x;\n" |
|
2329 "MAD R2.xyz, R0.w, R2, R3;\n" |
|
2330 "ADD R3.xy, fragment.position, c[8];\n" |
|
2331 "ADD R2.w, -R0, c[12].z;\n" |
|
2332 "MUL R1.xyz, R1, c[5].y;\n" |
|
2333 "MAD R2.xyz, R2.w, R1, R2;\n" |
|
2334 "MUL R1.xyz, R0, c[5].z;\n" |
|
2335 "ADD R3.z, -R1.w, c[12];\n" |
|
2336 "MAD R2.xyz, R3.z, R1, R2;\n" |
|
2337 "MUL R1.y, R1.w, R2.w;\n" |
|
2338 "MUL R1.x, R1.w, R0.w;\n" |
|
2339 "MUL R1.z, R0.w, R3;\n" |
|
2340 "DP3 R2.w, R1, c[5];\n" |
|
2341 "MUL R3.xy, R3, c[6];\n" |
|
2342 "TEX R1, R3, texture[1], 2D;\n" |
|
2343 "ADD R2, R2, -R0;\n" |
|
2344 "DP4 R1.x, R1, c[9];\n" |
|
2345 "MAD result.color, R1.x, R2, R0;\n" |
|
2346 "END\n" |
|
2347 ; |
|
2348 |
|
2349 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY = |
|
2350 "!!ARBfp1.0\n" |
|
2351 "PARAM c[11] = { program.local[0..7],\n" |
|
2352 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
2353 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
2354 " { 0.33299461, 0.99999559, 1 } };\n" |
|
2355 "TEMP R0;\n" |
|
2356 "TEMP R1;\n" |
|
2357 "TEMP R2;\n" |
|
2358 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
2359 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
2360 "ADD R0.xyz, R0, c[3];\n" |
|
2361 "RCP R0.z, R0.z;\n" |
|
2362 "MUL R0.xy, R0, R0.z;\n" |
|
2363 "ABS R0.z, R0.x;\n" |
|
2364 "ABS R0.w, R0.y;\n" |
|
2365 "ADD R0.w, R0, -R0.z;\n" |
|
2366 "ADD R1.x, R0.y, c[8].y;\n" |
|
2367 "ABS R0.w, R0;\n" |
|
2368 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
2369 "ABS R0.w, -R0.y;\n" |
|
2370 "MAX R1.x, R0.z, R0.w;\n" |
|
2371 "RCP R1.y, R1.x;\n" |
|
2372 "MIN R1.x, R0.z, R0.w;\n" |
|
2373 "MUL R1.x, R1, R1.y;\n" |
|
2374 "MUL R1.y, R1.x, R1.x;\n" |
|
2375 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" |
|
2376 "MAD R1.z, R1, R1.y, -c[9];\n" |
|
2377 "MAD R1.z, R1, R1.y, c[9].w;\n" |
|
2378 "MAD R1.z, R1, R1.y, -c[10].x;\n" |
|
2379 "MAD R1.y, R1.z, R1, c[10];\n" |
|
2380 "MUL R1.x, R1.y, R1;\n" |
|
2381 "ADD R1.y, -R1.x, c[8].w;\n" |
|
2382 "ADD R0.z, -R0, R0.w;\n" |
|
2383 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
2384 "ADD R0.w, -R0.z, c[8].z;\n" |
|
2385 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
2386 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
2387 "ADD R0.x, R0, c[0];\n" |
|
2388 "MUL R1.x, R0, c[8];\n" |
|
2389 "FLR R1.y, R1.x;\n" |
|
2390 "MUL R0.xy, fragment.position, c[5];\n" |
|
2391 "TEX R0, R0, texture[0], 2D;\n" |
|
2392 "ADD R1.x, R1, -R1.y;\n" |
|
2393 "TEX R1, R1, texture[2], 1D;\n" |
|
2394 "ADD R2.x, -R0.w, c[10].z;\n" |
|
2395 "MUL R2.xyz, R1, R2.x;\n" |
|
2396 "MAD R1.xyz, R1, R0, R2;\n" |
|
2397 "ADD R2.x, -R1.w, c[10].z;\n" |
|
2398 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
2399 "ADD R1.z, R1.w, R0.w;\n" |
|
2400 "MAD R2.w, -R1, R0, R1.z;\n" |
|
2401 "ADD R1.xy, fragment.position, c[6];\n" |
|
2402 "MUL R1.xy, R1, c[4];\n" |
|
2403 "TEX R1, R1, texture[1], 2D;\n" |
|
2404 "ADD R2, R2, -R0;\n" |
|
2405 "DP4 R1.x, R1, c[7];\n" |
|
2406 "MAD result.color, R1.x, R2, R0;\n" |
|
2407 "END\n" |
|
2408 ; |
|
2409 |
|
2410 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN = |
|
2411 "!!ARBfp1.0\n" |
|
2412 "PARAM c[11] = { program.local[0..7],\n" |
|
2413 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
2414 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
2415 " { 0.33299461, 0.99999559 } };\n" |
|
2416 "TEMP R0;\n" |
|
2417 "TEMP R1;\n" |
|
2418 "TEMP R2;\n" |
|
2419 "TEMP R3;\n" |
|
2420 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
2421 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
2422 "ADD R0.xyz, R0, c[3];\n" |
|
2423 "RCP R0.z, R0.z;\n" |
|
2424 "MUL R0.xy, R0, R0.z;\n" |
|
2425 "ADD R3.xy, fragment.position, c[6];\n" |
|
2426 "ABS R0.z, R0.x;\n" |
|
2427 "ABS R0.w, R0.y;\n" |
|
2428 "ADD R0.w, R0, -R0.z;\n" |
|
2429 "ADD R1.x, R0.y, c[8].y;\n" |
|
2430 "ABS R0.w, R0;\n" |
|
2431 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
2432 "ABS R0.w, -R0.y;\n" |
|
2433 "MAX R1.x, R0.z, R0.w;\n" |
|
2434 "RCP R1.y, R1.x;\n" |
|
2435 "MIN R1.x, R0.z, R0.w;\n" |
|
2436 "MUL R1.x, R1, R1.y;\n" |
|
2437 "MUL R1.y, R1.x, R1.x;\n" |
|
2438 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" |
|
2439 "MAD R1.z, R1, R1.y, -c[9];\n" |
|
2440 "MAD R1.z, R1, R1.y, c[9].w;\n" |
|
2441 "MAD R1.z, R1, R1.y, -c[10].x;\n" |
|
2442 "MAD R1.y, R1.z, R1, c[10];\n" |
|
2443 "MUL R1.x, R1.y, R1;\n" |
|
2444 "ADD R0.z, -R0, R0.w;\n" |
|
2445 "ADD R1.y, -R1.x, c[8].w;\n" |
|
2446 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
2447 "ADD R0.w, -R0.z, c[8].z;\n" |
|
2448 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
2449 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
2450 "ADD R0.x, R0, c[0];\n" |
|
2451 "MUL R0.x, R0, c[8];\n" |
|
2452 "FLR R0.y, R0.x;\n" |
|
2453 "ADD R0.z, R0.x, -R0.y;\n" |
|
2454 "TEX R1, R0.z, texture[2], 1D;\n" |
|
2455 "MUL R0.xy, fragment.position, c[5];\n" |
|
2456 "TEX R0, R0, texture[0], 2D;\n" |
|
2457 "ADD R2, R1, R0;\n" |
|
2458 "MAD R2, -R1, R0, R2;\n" |
|
2459 "MUL R3.xy, R3, c[4];\n" |
|
2460 "TEX R1, R3, texture[1], 2D;\n" |
|
2461 "ADD R2, R2, -R0;\n" |
|
2462 "DP4 R1.x, R1, c[7];\n" |
|
2463 "MAD result.color, R1.x, R2, R0;\n" |
|
2464 "END\n" |
|
2465 ; |
|
2466 |
|
2467 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY = |
|
2468 "!!ARBfp1.0\n" |
|
2469 "PARAM c[11] = { program.local[0..7],\n" |
|
2470 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" |
|
2471 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" |
|
2472 " { 3.141593, 0.15915494, 2, 1 } };\n" |
|
2473 "TEMP R0;\n" |
|
2474 "TEMP R1;\n" |
|
2475 "TEMP R2;\n" |
|
2476 "TEMP R3;\n" |
|
2477 "TEMP R4;\n" |
|
2478 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
2479 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
2480 "ADD R0.xyz, R0, c[3];\n" |
|
2481 "RCP R0.z, R0.z;\n" |
|
2482 "MUL R0.xy, R0, R0.z;\n" |
|
2483 "ABS R0.z, R0.x;\n" |
|
2484 "ABS R0.w, R0.y;\n" |
|
2485 "ADD R0.w, R0, -R0.z;\n" |
|
2486 "ADD R1.x, R0.y, c[8];\n" |
|
2487 "ABS R0.w, R0;\n" |
|
2488 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
2489 "ABS R0.w, -R0.y;\n" |
|
2490 "MAX R1.x, R0.z, R0.w;\n" |
|
2491 "RCP R1.y, R1.x;\n" |
|
2492 "MIN R1.x, R0.z, R0.w;\n" |
|
2493 "MUL R1.x, R1, R1.y;\n" |
|
2494 "MUL R1.y, R1.x, R1.x;\n" |
|
2495 "MAD R1.z, R1.y, c[8].y, c[8];\n" |
|
2496 "MAD R1.z, R1, R1.y, -c[8].w;\n" |
|
2497 "MAD R1.z, R1, R1.y, c[9].x;\n" |
|
2498 "MAD R1.z, R1, R1.y, -c[9].y;\n" |
|
2499 "MAD R1.y, R1.z, R1, c[9].z;\n" |
|
2500 "MUL R1.x, R1.y, R1;\n" |
|
2501 "ADD R0.z, -R0, R0.w;\n" |
|
2502 "ADD R1.y, -R1.x, c[9].w;\n" |
|
2503 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
2504 "ADD R0.w, -R0.z, c[10].x;\n" |
|
2505 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
2506 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
2507 "ADD R0.x, R0, c[0];\n" |
|
2508 "MUL R0.x, R0, c[10].y;\n" |
|
2509 "FLR R0.y, R0.x;\n" |
|
2510 "ADD R0.x, R0, -R0.y;\n" |
|
2511 "TEX R0, R0, texture[2], 1D;\n" |
|
2512 "MUL R1.xy, fragment.position, c[5];\n" |
|
2513 "TEX R1, R1, texture[0], 2D;\n" |
|
2514 "ADD R2.w, -R1, c[10];\n" |
|
2515 "ADD R3.xyz, R0.w, -R0;\n" |
|
2516 "ADD R2.xyz, R1.w, -R1;\n" |
|
2517 "MUL R2.xyz, R2, R3;\n" |
|
2518 "MUL R2.xyz, R2, c[10].z;\n" |
|
2519 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
2520 "MUL R4.xyz, R0, R2.w;\n" |
|
2521 "MUL R3.xyz, R0, R1;\n" |
|
2522 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
2523 "ADD R2.x, -R0.w, c[10].w;\n" |
|
2524 "MAD R3.xyz, R3, c[10].z, R4;\n" |
|
2525 "MAD R3.xyz, R1, R2.x, R3;\n" |
|
2526 "MAD R0.xyz, R1, R2.x, R0;\n" |
|
2527 "MUL R2.xyz, R1, c[10].z;\n" |
|
2528 "ADD R0.xyz, R0, -R3;\n" |
|
2529 "SGE R2.xyz, R2, R1.w;\n" |
|
2530 "MAD R2.xyz, R2, R0, R3;\n" |
|
2531 "ADD R0.z, R0.w, R1.w;\n" |
|
2532 "MAD R2.w, -R0, R1, R0.z;\n" |
|
2533 "ADD R0.xy, fragment.position, c[6];\n" |
|
2534 "MUL R0.xy, R0, c[4];\n" |
|
2535 "TEX R0, R0, texture[1], 2D;\n" |
|
2536 "ADD R2, R2, -R1;\n" |
|
2537 "DP4 R0.x, R0, c[7];\n" |
|
2538 "MAD result.color, R0.x, R2, R1;\n" |
|
2539 "END\n" |
|
2540 ; |
|
2541 |
|
2542 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN = |
|
2543 "!!ARBfp1.0\n" |
|
2544 "PARAM c[11] = { program.local[0..7],\n" |
|
2545 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
2546 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
2547 " { 0.33299461, 0.99999559, 1 } };\n" |
|
2548 "TEMP R0;\n" |
|
2549 "TEMP R1;\n" |
|
2550 "TEMP R2;\n" |
|
2551 "TEMP R3;\n" |
|
2552 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
2553 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
2554 "ADD R0.xyz, R0, c[3];\n" |
|
2555 "RCP R0.z, R0.z;\n" |
|
2556 "MUL R0.xy, R0, R0.z;\n" |
|
2557 "ABS R0.z, R0.x;\n" |
|
2558 "ABS R0.w, R0.y;\n" |
|
2559 "ADD R0.w, R0, -R0.z;\n" |
|
2560 "ADD R1.x, R0.y, c[8].y;\n" |
|
2561 "ABS R0.w, R0;\n" |
|
2562 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
2563 "ABS R0.w, -R0.y;\n" |
|
2564 "MAX R1.x, R0.z, R0.w;\n" |
|
2565 "RCP R1.y, R1.x;\n" |
|
2566 "MIN R1.x, R0.z, R0.w;\n" |
|
2567 "MUL R1.x, R1, R1.y;\n" |
|
2568 "MUL R1.y, R1.x, R1.x;\n" |
|
2569 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" |
|
2570 "MAD R1.z, R1, R1.y, -c[9];\n" |
|
2571 "MAD R1.z, R1, R1.y, c[9].w;\n" |
|
2572 "MAD R1.z, R1, R1.y, -c[10].x;\n" |
|
2573 "MAD R1.y, R1.z, R1, c[10];\n" |
|
2574 "MUL R1.x, R1.y, R1;\n" |
|
2575 "ADD R1.y, -R1.x, c[8].w;\n" |
|
2576 "ADD R0.z, -R0, R0.w;\n" |
|
2577 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
2578 "ADD R0.w, -R0.z, c[8].z;\n" |
|
2579 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
2580 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
2581 "ADD R0.x, R0, c[0];\n" |
|
2582 "MUL R0.z, R0.x, c[8].x;\n" |
|
2583 "FLR R0.w, R0.z;\n" |
|
2584 "ADD R1.x, R0.z, -R0.w;\n" |
|
2585 "MUL R0.xy, fragment.position, c[5];\n" |
|
2586 "TEX R0, R0, texture[0], 2D;\n" |
|
2587 "TEX R1, R1, texture[2], 1D;\n" |
|
2588 "MUL R3.xyz, R1.w, R0;\n" |
|
2589 "MUL R2.xyz, R1, R0.w;\n" |
|
2590 "MIN R2.xyz, R2, R3;\n" |
|
2591 "ADD R2.w, -R0, c[10].z;\n" |
|
2592 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
2593 "ADD R2.x, -R1.w, c[10].z;\n" |
|
2594 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
2595 "ADD R1.z, R1.w, R0.w;\n" |
|
2596 "MAD R2.w, -R1, R0, R1.z;\n" |
|
2597 "ADD R1.xy, fragment.position, c[6];\n" |
|
2598 "MUL R1.xy, R1, c[4];\n" |
|
2599 "TEX R1, R1, texture[1], 2D;\n" |
|
2600 "ADD R2, R2, -R0;\n" |
|
2601 "DP4 R1.x, R1, c[7];\n" |
|
2602 "MAD result.color, R1.x, R2, R0;\n" |
|
2603 "END\n" |
|
2604 ; |
|
2605 |
|
2606 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN = |
|
2607 "!!ARBfp1.0\n" |
|
2608 "PARAM c[11] = { program.local[0..7],\n" |
|
2609 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
2610 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
2611 " { 0.33299461, 0.99999559, 1 } };\n" |
|
2612 "TEMP R0;\n" |
|
2613 "TEMP R1;\n" |
|
2614 "TEMP R2;\n" |
|
2615 "TEMP R3;\n" |
|
2616 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
2617 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
2618 "ADD R0.xyz, R0, c[3];\n" |
|
2619 "RCP R0.z, R0.z;\n" |
|
2620 "MUL R0.xy, R0, R0.z;\n" |
|
2621 "ABS R0.z, R0.x;\n" |
|
2622 "ABS R0.w, R0.y;\n" |
|
2623 "ADD R0.w, R0, -R0.z;\n" |
|
2624 "ADD R1.x, R0.y, c[8].y;\n" |
|
2625 "ABS R0.w, R0;\n" |
|
2626 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
2627 "ABS R0.w, -R0.y;\n" |
|
2628 "MAX R1.x, R0.z, R0.w;\n" |
|
2629 "RCP R1.y, R1.x;\n" |
|
2630 "MIN R1.x, R0.z, R0.w;\n" |
|
2631 "MUL R1.x, R1, R1.y;\n" |
|
2632 "MUL R1.y, R1.x, R1.x;\n" |
|
2633 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" |
|
2634 "MAD R1.z, R1, R1.y, -c[9];\n" |
|
2635 "MAD R1.z, R1, R1.y, c[9].w;\n" |
|
2636 "MAD R1.z, R1, R1.y, -c[10].x;\n" |
|
2637 "MAD R1.y, R1.z, R1, c[10];\n" |
|
2638 "MUL R1.x, R1.y, R1;\n" |
|
2639 "ADD R1.y, -R1.x, c[8].w;\n" |
|
2640 "ADD R0.z, -R0, R0.w;\n" |
|
2641 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
2642 "ADD R0.w, -R0.z, c[8].z;\n" |
|
2643 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
2644 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
2645 "ADD R0.x, R0, c[0];\n" |
|
2646 "MUL R0.z, R0.x, c[8].x;\n" |
|
2647 "FLR R0.w, R0.z;\n" |
|
2648 "ADD R1.x, R0.z, -R0.w;\n" |
|
2649 "MUL R0.xy, fragment.position, c[5];\n" |
|
2650 "TEX R0, R0, texture[0], 2D;\n" |
|
2651 "TEX R1, R1, texture[2], 1D;\n" |
|
2652 "MUL R3.xyz, R1.w, R0;\n" |
|
2653 "MUL R2.xyz, R1, R0.w;\n" |
|
2654 "MAX R2.xyz, R2, R3;\n" |
|
2655 "ADD R2.w, -R0, c[10].z;\n" |
|
2656 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
2657 "ADD R2.x, -R1.w, c[10].z;\n" |
|
2658 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
2659 "ADD R1.z, R1.w, R0.w;\n" |
|
2660 "MAD R2.w, -R1, R0, R1.z;\n" |
|
2661 "ADD R1.xy, fragment.position, c[6];\n" |
|
2662 "MUL R1.xy, R1, c[4];\n" |
|
2663 "TEX R1, R1, texture[1], 2D;\n" |
|
2664 "ADD R2, R2, -R0;\n" |
|
2665 "DP4 R1.x, R1, c[7];\n" |
|
2666 "MAD result.color, R1.x, R2, R0;\n" |
|
2667 "END\n" |
|
2668 ; |
|
2669 |
|
2670 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE = |
|
2671 "!!ARBfp1.0\n" |
|
2672 "PARAM c[11] = { program.local[0..7],\n" |
|
2673 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" |
|
2674 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" |
|
2675 " { 3.141593, 0.15915494, 1, 1e-006 } };\n" |
|
2676 "TEMP R0;\n" |
|
2677 "TEMP R1;\n" |
|
2678 "TEMP R2;\n" |
|
2679 "TEMP R3;\n" |
|
2680 "TEMP R4;\n" |
|
2681 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
2682 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
2683 "ADD R0.xyz, R0, c[3];\n" |
|
2684 "RCP R0.z, R0.z;\n" |
|
2685 "MUL R0.xy, R0, R0.z;\n" |
|
2686 "ABS R0.z, R0.x;\n" |
|
2687 "ABS R0.w, R0.y;\n" |
|
2688 "ADD R0.w, R0, -R0.z;\n" |
|
2689 "ADD R1.x, R0.y, c[8];\n" |
|
2690 "ABS R0.w, R0;\n" |
|
2691 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
2692 "ABS R0.w, -R0.y;\n" |
|
2693 "MAX R1.x, R0.z, R0.w;\n" |
|
2694 "RCP R1.y, R1.x;\n" |
|
2695 "MIN R1.x, R0.z, R0.w;\n" |
|
2696 "MUL R1.x, R1, R1.y;\n" |
|
2697 "MUL R1.y, R1.x, R1.x;\n" |
|
2698 "MAD R1.z, R1.y, c[8].y, c[8];\n" |
|
2699 "MAD R1.z, R1, R1.y, -c[8].w;\n" |
|
2700 "MAD R1.z, R1, R1.y, c[9].x;\n" |
|
2701 "MAD R1.z, R1, R1.y, -c[9].y;\n" |
|
2702 "MAD R1.y, R1.z, R1, c[9].z;\n" |
|
2703 "MUL R1.x, R1.y, R1;\n" |
|
2704 "ADD R1.y, -R1.x, c[9].w;\n" |
|
2705 "ADD R0.z, -R0, R0.w;\n" |
|
2706 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
2707 "ADD R0.w, -R0.z, c[10].x;\n" |
|
2708 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
2709 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
2710 "ADD R0.x, R0, c[0];\n" |
|
2711 "MUL R0.x, R0, c[10].y;\n" |
|
2712 "FLR R0.y, R0.x;\n" |
|
2713 "ADD R0.x, R0, -R0.y;\n" |
|
2714 "TEX R0, R0, texture[2], 1D;\n" |
|
2715 "MAX R1.x, R0.w, c[10].w;\n" |
|
2716 "RCP R1.x, R1.x;\n" |
|
2717 "MAD R1.xyz, -R0, R1.x, c[10].z;\n" |
|
2718 "MAX R2.xyz, R1, c[10].w;\n" |
|
2719 "MUL R1.xy, fragment.position, c[5];\n" |
|
2720 "TEX R1, R1, texture[0], 2D;\n" |
|
2721 "ADD R2.w, -R0, c[10].z;\n" |
|
2722 "MUL R3.xyz, R1, R2.w;\n" |
|
2723 "ADD R2.w, -R1, c[10].z;\n" |
|
2724 "MAD R4.xyz, R0, R2.w, R3;\n" |
|
2725 "MUL R3.xyz, R0.w, R1;\n" |
|
2726 "MUL R2.w, R0, R1;\n" |
|
2727 "MAD R0.xyz, R0, R1.w, R3;\n" |
|
2728 "SGE R0.xyz, R0, R2.w;\n" |
|
2729 "RCP R2.x, R2.x;\n" |
|
2730 "RCP R2.y, R2.y;\n" |
|
2731 "RCP R2.z, R2.z;\n" |
|
2732 "MAD R2.xyz, R3, R2, R4;\n" |
|
2733 "MAD R4.xyz, R0.w, R1.w, R4;\n" |
|
2734 "ADD R4.xyz, R4, -R2;\n" |
|
2735 "MAD R2.xyz, R0, R4, R2;\n" |
|
2736 "ADD R0.z, R0.w, R1.w;\n" |
|
2737 "MAD R2.w, -R0, R1, R0.z;\n" |
|
2738 "ADD R0.xy, fragment.position, c[6];\n" |
|
2739 "MUL R0.xy, R0, c[4];\n" |
|
2740 "TEX R0, R0, texture[1], 2D;\n" |
|
2741 "ADD R2, R2, -R1;\n" |
|
2742 "DP4 R0.x, R0, c[7];\n" |
|
2743 "MAD result.color, R0.x, R2, R1;\n" |
|
2744 "END\n" |
|
2745 ; |
|
2746 |
|
2747 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN = |
|
2748 "!!ARBfp1.0\n" |
|
2749 "PARAM c[11] = { program.local[0..7],\n" |
|
2750 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" |
|
2751 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" |
|
2752 " { 3.141593, 0.15915494, 1, 9.9999997e-006 } };\n" |
|
2753 "TEMP R0;\n" |
|
2754 "TEMP R1;\n" |
|
2755 "TEMP R2;\n" |
|
2756 "TEMP R3;\n" |
|
2757 "TEMP R4;\n" |
|
2758 "TEMP R5;\n" |
|
2759 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
2760 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
2761 "ADD R0.xyz, R0, c[3];\n" |
|
2762 "RCP R0.z, R0.z;\n" |
|
2763 "MUL R0.xy, R0, R0.z;\n" |
|
2764 "ABS R0.w, R0.x;\n" |
|
2765 "ABS R0.z, R0.y;\n" |
|
2766 "ADD R0.z, R0, -R0.w;\n" |
|
2767 "ADD R1.x, R0.y, c[8];\n" |
|
2768 "ABS R0.z, R0;\n" |
|
2769 "CMP R0.y, -R0.z, R0, R1.x;\n" |
|
2770 "ABS R0.z, -R0.y;\n" |
|
2771 "MAX R1.x, R0.w, R0.z;\n" |
|
2772 "RCP R1.y, R1.x;\n" |
|
2773 "MIN R1.x, R0.w, R0.z;\n" |
|
2774 "MUL R1.x, R1, R1.y;\n" |
|
2775 "MUL R1.y, R1.x, R1.x;\n" |
|
2776 "MAD R1.z, R1.y, c[8].y, c[8];\n" |
|
2777 "MAD R1.z, R1, R1.y, -c[8].w;\n" |
|
2778 "MAD R1.z, R1, R1.y, c[9].x;\n" |
|
2779 "MAD R1.z, R1, R1.y, -c[9].y;\n" |
|
2780 "MAD R1.y, R1.z, R1, c[9].z;\n" |
|
2781 "MUL R1.x, R1.y, R1;\n" |
|
2782 "ADD R1.y, -R1.x, c[9].w;\n" |
|
2783 "ADD R0.z, -R0.w, R0;\n" |
|
2784 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
2785 "ADD R0.w, -R0.z, c[10].x;\n" |
|
2786 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
2787 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
2788 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
2789 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
2790 "ADD R0.x, R0, c[0];\n" |
|
2791 "MUL R0.x, R0, c[10].y;\n" |
|
2792 "FLR R0.y, R0.x;\n" |
|
2793 "ADD R0.x, R0, -R0.y;\n" |
|
2794 "TEX R0, R0, texture[2], 1D;\n" |
|
2795 "MUL R2.xyz, R0.w, R1;\n" |
|
2796 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
2797 "MAD R2.xyz, -R0.w, R1.w, R3;\n" |
|
2798 "MUL R4.xyz, R0.w, R2;\n" |
|
2799 "MAX R2.xyz, R0, c[10].w;\n" |
|
2800 "ADD R2.w, -R1, c[10].z;\n" |
|
2801 "ADD R3.w, -R0, c[10].z;\n" |
|
2802 "MUL R5.xyz, R0, R2.w;\n" |
|
2803 "RCP R2.x, R2.x;\n" |
|
2804 "RCP R2.y, R2.y;\n" |
|
2805 "RCP R2.z, R2.z;\n" |
|
2806 "MAD R2.xyz, R4, R2, R5;\n" |
|
2807 "MUL R4.xyz, R1, R3.w;\n" |
|
2808 "MAD R0.xyz, R0, R2.w, R4;\n" |
|
2809 "MUL R2.w, R0, R1;\n" |
|
2810 "MAD R2.xyz, R1, R3.w, R2;\n" |
|
2811 "ADD R2.xyz, R2, -R0;\n" |
|
2812 "SGE R3.xyz, R3, R2.w;\n" |
|
2813 "MAD R2.xyz, R3, R2, R0;\n" |
|
2814 "ADD R0.z, R0.w, R1.w;\n" |
|
2815 "MAD R2.w, -R0, R1, R0.z;\n" |
|
2816 "ADD R0.xy, fragment.position, c[6];\n" |
|
2817 "MUL R0.xy, R0, c[4];\n" |
|
2818 "TEX R0, R0, texture[1], 2D;\n" |
|
2819 "ADD R2, R2, -R1;\n" |
|
2820 "DP4 R0.x, R0, c[7];\n" |
|
2821 "MAD result.color, R0.x, R2, R1;\n" |
|
2822 "END\n" |
|
2823 ; |
|
2824 |
|
2825 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT = |
|
2826 "!!ARBfp1.0\n" |
|
2827 "PARAM c[11] = { program.local[0..7],\n" |
|
2828 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" |
|
2829 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" |
|
2830 " { 3.141593, 0.15915494, 2, 1 } };\n" |
|
2831 "TEMP R0;\n" |
|
2832 "TEMP R1;\n" |
|
2833 "TEMP R2;\n" |
|
2834 "TEMP R3;\n" |
|
2835 "TEMP R4;\n" |
|
2836 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
2837 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
2838 "ADD R0.xyz, R0, c[3];\n" |
|
2839 "RCP R0.z, R0.z;\n" |
|
2840 "MUL R0.xy, R0, R0.z;\n" |
|
2841 "ABS R0.z, R0.x;\n" |
|
2842 "ABS R0.w, R0.y;\n" |
|
2843 "ADD R0.w, R0, -R0.z;\n" |
|
2844 "ADD R1.x, R0.y, c[8];\n" |
|
2845 "ABS R0.w, R0;\n" |
|
2846 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
2847 "ABS R0.w, -R0.y;\n" |
|
2848 "MAX R1.x, R0.z, R0.w;\n" |
|
2849 "RCP R1.y, R1.x;\n" |
|
2850 "MIN R1.x, R0.z, R0.w;\n" |
|
2851 "MUL R1.x, R1, R1.y;\n" |
|
2852 "MUL R1.y, R1.x, R1.x;\n" |
|
2853 "MAD R1.z, R1.y, c[8].y, c[8];\n" |
|
2854 "MAD R1.z, R1, R1.y, -c[8].w;\n" |
|
2855 "MAD R1.z, R1, R1.y, c[9].x;\n" |
|
2856 "MAD R1.z, R1, R1.y, -c[9].y;\n" |
|
2857 "MAD R1.y, R1.z, R1, c[9].z;\n" |
|
2858 "MUL R1.x, R1.y, R1;\n" |
|
2859 "ADD R0.z, -R0, R0.w;\n" |
|
2860 "ADD R1.y, -R1.x, c[9].w;\n" |
|
2861 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
2862 "ADD R0.w, -R0.z, c[10].x;\n" |
|
2863 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
2864 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
2865 "ADD R0.x, R0, c[0];\n" |
|
2866 "MUL R0.x, R0, c[10].y;\n" |
|
2867 "FLR R0.y, R0.x;\n" |
|
2868 "ADD R0.x, R0, -R0.y;\n" |
|
2869 "TEX R0, R0, texture[2], 1D;\n" |
|
2870 "MUL R1.xy, fragment.position, c[5];\n" |
|
2871 "TEX R1, R1, texture[0], 2D;\n" |
|
2872 "ADD R2.w, -R1, c[10];\n" |
|
2873 "ADD R3.xyz, R0.w, -R0;\n" |
|
2874 "ADD R2.xyz, R1.w, -R1;\n" |
|
2875 "MUL R2.xyz, R2, R3;\n" |
|
2876 "MUL R2.xyz, R2, c[10].z;\n" |
|
2877 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
2878 "MUL R4.xyz, R0, R2.w;\n" |
|
2879 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
2880 "MUL R3.xyz, R0, R1;\n" |
|
2881 "ADD R2.w, -R0, c[10];\n" |
|
2882 "MAD R3.xyz, R3, c[10].z, R4;\n" |
|
2883 "MUL R0.xyz, R0, c[10].z;\n" |
|
2884 "SGE R0.xyz, R0, R0.w;\n" |
|
2885 "MAD R3.xyz, R1, R2.w, R3;\n" |
|
2886 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
2887 "ADD R2.xyz, R2, -R3;\n" |
|
2888 "MAD R2.xyz, R0, R2, R3;\n" |
|
2889 "ADD R0.z, R0.w, R1.w;\n" |
|
2890 "MAD R2.w, -R0, R1, R0.z;\n" |
|
2891 "ADD R0.xy, fragment.position, c[6];\n" |
|
2892 "MUL R0.xy, R0, c[4];\n" |
|
2893 "TEX R0, R0, texture[1], 2D;\n" |
|
2894 "ADD R2, R2, -R1;\n" |
|
2895 "DP4 R0.x, R0, c[7];\n" |
|
2896 "MAD result.color, R0.x, R2, R1;\n" |
|
2897 "END\n" |
|
2898 ; |
|
2899 |
|
2900 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT = |
|
2901 "!!ARBfp1.0\n" |
|
2902 "PARAM c[12] = { program.local[0..7],\n" |
|
2903 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" |
|
2904 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" |
|
2905 " { 3.141593, 0.15915494, 1, 2 },\n" |
|
2906 " { 9.9999997e-006, 8, 3 } };\n" |
|
2907 "TEMP R0;\n" |
|
2908 "TEMP R1;\n" |
|
2909 "TEMP R2;\n" |
|
2910 "TEMP R3;\n" |
|
2911 "TEMP R4;\n" |
|
2912 "TEMP R5;\n" |
|
2913 "TEMP R6;\n" |
|
2914 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
2915 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
2916 "ADD R0.xyz, R0, c[3];\n" |
|
2917 "RCP R0.z, R0.z;\n" |
|
2918 "MUL R0.xy, R0, R0.z;\n" |
|
2919 "ABS R0.w, R0.x;\n" |
|
2920 "ABS R0.z, R0.y;\n" |
|
2921 "ADD R0.z, R0, -R0.w;\n" |
|
2922 "ADD R1.x, R0.y, c[8];\n" |
|
2923 "ABS R0.z, R0;\n" |
|
2924 "CMP R0.y, -R0.z, R0, R1.x;\n" |
|
2925 "ABS R0.z, -R0.y;\n" |
|
2926 "MAX R1.x, R0.w, R0.z;\n" |
|
2927 "RCP R1.y, R1.x;\n" |
|
2928 "MIN R1.x, R0.w, R0.z;\n" |
|
2929 "MUL R1.x, R1, R1.y;\n" |
|
2930 "MUL R1.y, R1.x, R1.x;\n" |
|
2931 "MAD R1.z, R1.y, c[8].y, c[8];\n" |
|
2932 "MAD R1.z, R1, R1.y, -c[8].w;\n" |
|
2933 "MAD R1.z, R1, R1.y, c[9].x;\n" |
|
2934 "MAD R1.z, R1, R1.y, -c[9].y;\n" |
|
2935 "MAD R1.y, R1.z, R1, c[9].z;\n" |
|
2936 "MUL R1.x, R1.y, R1;\n" |
|
2937 "ADD R1.y, -R1.x, c[9].w;\n" |
|
2938 "ADD R0.z, -R0.w, R0;\n" |
|
2939 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
2940 "ADD R0.w, -R0.z, c[10].x;\n" |
|
2941 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
2942 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
2943 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
2944 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
2945 "MAX R0.y, R1.w, c[11].x;\n" |
|
2946 "RCP R2.w, R0.y;\n" |
|
2947 "MUL R5.xyz, R1, R2.w;\n" |
|
2948 "RSQ R2.x, R5.x;\n" |
|
2949 "RSQ R2.z, R5.z;\n" |
|
2950 "RSQ R2.y, R5.y;\n" |
|
2951 "ADD R0.x, R0, c[0];\n" |
|
2952 "MUL R0.x, R0, c[10].y;\n" |
|
2953 "FLR R0.y, R0.x;\n" |
|
2954 "ADD R0.x, R0, -R0.y;\n" |
|
2955 "TEX R0, R0, texture[2], 1D;\n" |
|
2956 "MAD R3.xyz, R0, c[10].w, -R0.w;\n" |
|
2957 "MAD R6.xyz, -R5, c[11].y, c[11].z;\n" |
|
2958 "RCP R2.x, R2.x;\n" |
|
2959 "RCP R2.z, R2.z;\n" |
|
2960 "RCP R2.y, R2.y;\n" |
|
2961 "MAD R2.xyz, R1.w, R2, -R1;\n" |
|
2962 "MUL R2.xyz, R3, R2;\n" |
|
2963 "MAD R4.xyz, R0.w, R1, R2;\n" |
|
2964 "MAD R2.xyz, -R1, R2.w, c[10].z;\n" |
|
2965 "MUL R5.xyz, R2, R3;\n" |
|
2966 "MAD R6.xyz, -R5, R6, R0.w;\n" |
|
2967 "MAD R5.xyz, -R1, R6, R4;\n" |
|
2968 "MAD R2.xyz, -R2, R3, R0.w;\n" |
|
2969 "MUL R3.xyz, R0, c[10].w;\n" |
|
2970 "MUL R4.xyz, R1, c[11].y;\n" |
|
2971 "SGE R3.xyz, R3, R0.w;\n" |
|
2972 "ADD R2.w, -R1, c[10].z;\n" |
|
2973 "MUL R6.xyz, R1, R6;\n" |
|
2974 "SGE R4.xyz, R4, R1.w;\n" |
|
2975 "MAD R4.xyz, R4, R5, R6;\n" |
|
2976 "MAD R4.xyz, -R1, R2, R4;\n" |
|
2977 "MUL R2.xyz, R1, R2;\n" |
|
2978 "MAD R2.xyz, R3, R4, R2;\n" |
|
2979 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
2980 "ADD R0.x, -R0.w, c[10].z;\n" |
|
2981 "MAD R2.xyz, R1, R0.x, R2;\n" |
|
2982 "ADD R0.z, R0.w, R1.w;\n" |
|
2983 "MAD R2.w, -R0, R1, R0.z;\n" |
|
2984 "ADD R0.xy, fragment.position, c[6];\n" |
|
2985 "MUL R0.xy, R0, c[4];\n" |
|
2986 "TEX R0, R0, texture[1], 2D;\n" |
|
2987 "ADD R2, R2, -R1;\n" |
|
2988 "DP4 R0.x, R0, c[7];\n" |
|
2989 "MAD result.color, R0.x, R2, R1;\n" |
|
2990 "END\n" |
|
2991 ; |
|
2992 |
|
2993 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE = |
|
2994 "!!ARBfp1.0\n" |
|
2995 "PARAM c[11] = { program.local[0..7],\n" |
|
2996 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
2997 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
2998 " { 0.33299461, 0.99999559, 2 } };\n" |
|
2999 "TEMP R0;\n" |
|
3000 "TEMP R1;\n" |
|
3001 "TEMP R2;\n" |
|
3002 "TEMP R3;\n" |
|
3003 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3004 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3005 "ADD R0.xyz, R0, c[3];\n" |
|
3006 "RCP R0.z, R0.z;\n" |
|
3007 "MUL R0.xy, R0, R0.z;\n" |
|
3008 "ABS R0.z, R0.x;\n" |
|
3009 "ABS R0.w, R0.y;\n" |
|
3010 "ADD R0.w, R0, -R0.z;\n" |
|
3011 "ADD R1.x, R0.y, c[8].y;\n" |
|
3012 "ABS R0.w, R0;\n" |
|
3013 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3014 "ABS R0.w, -R0.y;\n" |
|
3015 "MAX R1.x, R0.z, R0.w;\n" |
|
3016 "RCP R1.y, R1.x;\n" |
|
3017 "MIN R1.x, R0.z, R0.w;\n" |
|
3018 "MUL R1.x, R1, R1.y;\n" |
|
3019 "MUL R1.y, R1.x, R1.x;\n" |
|
3020 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" |
|
3021 "MAD R1.z, R1, R1.y, -c[9];\n" |
|
3022 "MAD R1.z, R1, R1.y, c[9].w;\n" |
|
3023 "MAD R1.z, R1, R1.y, -c[10].x;\n" |
|
3024 "MAD R1.y, R1.z, R1, c[10];\n" |
|
3025 "MUL R1.x, R1.y, R1;\n" |
|
3026 "ADD R1.y, -R1.x, c[8].w;\n" |
|
3027 "ADD R0.z, -R0, R0.w;\n" |
|
3028 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3029 "ADD R0.w, -R0.z, c[8].z;\n" |
|
3030 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3031 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3032 "ADD R0.x, R0, c[0];\n" |
|
3033 "MUL R0.z, R0.x, c[8].x;\n" |
|
3034 "FLR R0.w, R0.z;\n" |
|
3035 "ADD R1.x, R0.z, -R0.w;\n" |
|
3036 "MUL R0.xy, fragment.position, c[5];\n" |
|
3037 "TEX R0, R0, texture[0], 2D;\n" |
|
3038 "TEX R1, R1, texture[2], 1D;\n" |
|
3039 "ADD R2.xyz, R1, R0;\n" |
|
3040 "MUL R3.xyz, R1.w, R0;\n" |
|
3041 "MUL R1.xyz, R1, R0.w;\n" |
|
3042 "MIN R1.xyz, R1, R3;\n" |
|
3043 "MAD R2.xyz, -R1, c[10].z, R2;\n" |
|
3044 "ADD R1.z, R1.w, R0.w;\n" |
|
3045 "MAD R2.w, -R1, R0, R1.z;\n" |
|
3046 "ADD R1.xy, fragment.position, c[6];\n" |
|
3047 "MUL R1.xy, R1, c[4];\n" |
|
3048 "TEX R1, R1, texture[1], 2D;\n" |
|
3049 "ADD R2, R2, -R0;\n" |
|
3050 "DP4 R1.x, R1, c[7];\n" |
|
3051 "MAD result.color, R1.x, R2, R0;\n" |
|
3052 "END\n" |
|
3053 ; |
|
3054 |
|
3055 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION = |
|
3056 "!!ARBfp1.0\n" |
|
3057 "PARAM c[11] = { program.local[0..7],\n" |
|
3058 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
3059 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
3060 " { 0.33299461, 0.99999559, 2, 1 } };\n" |
|
3061 "TEMP R0;\n" |
|
3062 "TEMP R1;\n" |
|
3063 "TEMP R2;\n" |
|
3064 "TEMP R3;\n" |
|
3065 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3066 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3067 "ADD R0.xyz, R0, c[3];\n" |
|
3068 "RCP R0.z, R0.z;\n" |
|
3069 "MUL R0.xy, R0, R0.z;\n" |
|
3070 "ABS R0.z, R0.x;\n" |
|
3071 "ABS R0.w, R0.y;\n" |
|
3072 "ADD R0.w, R0, -R0.z;\n" |
|
3073 "ADD R1.x, R0.y, c[8].y;\n" |
|
3074 "ABS R0.w, R0;\n" |
|
3075 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3076 "ABS R0.w, -R0.y;\n" |
|
3077 "MAX R1.x, R0.z, R0.w;\n" |
|
3078 "RCP R1.y, R1.x;\n" |
|
3079 "MIN R1.x, R0.z, R0.w;\n" |
|
3080 "MUL R1.x, R1, R1.y;\n" |
|
3081 "MUL R1.y, R1.x, R1.x;\n" |
|
3082 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" |
|
3083 "MAD R1.z, R1, R1.y, -c[9];\n" |
|
3084 "MAD R1.z, R1, R1.y, c[9].w;\n" |
|
3085 "MAD R1.z, R1, R1.y, -c[10].x;\n" |
|
3086 "MAD R1.y, R1.z, R1, c[10];\n" |
|
3087 "MUL R1.x, R1.y, R1;\n" |
|
3088 "ADD R1.y, -R1.x, c[8].w;\n" |
|
3089 "ADD R0.z, -R0, R0.w;\n" |
|
3090 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3091 "ADD R0.w, -R0.z, c[8].z;\n" |
|
3092 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3093 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3094 "ADD R0.x, R0, c[0];\n" |
|
3095 "MUL R0.z, R0.x, c[8].x;\n" |
|
3096 "FLR R0.w, R0.z;\n" |
|
3097 "ADD R1.x, R0.z, -R0.w;\n" |
|
3098 "MUL R0.xy, fragment.position, c[5];\n" |
|
3099 "TEX R0, R0, texture[0], 2D;\n" |
|
3100 "TEX R1, R1, texture[2], 1D;\n" |
|
3101 "MUL R2.xyz, R1.w, R0;\n" |
|
3102 "MAD R3.xyz, R1, R0.w, R2;\n" |
|
3103 "MUL R2.xyz, R1, R0;\n" |
|
3104 "MAD R2.xyz, -R2, c[10].z, R3;\n" |
|
3105 "ADD R2.w, -R0, c[10];\n" |
|
3106 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
3107 "ADD R2.x, -R1.w, c[10].w;\n" |
|
3108 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
3109 "ADD R1.z, R1.w, R0.w;\n" |
|
3110 "MAD R2.w, -R1, R0, R1.z;\n" |
|
3111 "ADD R1.xy, fragment.position, c[6];\n" |
|
3112 "MUL R1.xy, R1, c[4];\n" |
|
3113 "TEX R1, R1, texture[1], 2D;\n" |
|
3114 "ADD R2, R2, -R0;\n" |
|
3115 "DP4 R1.x, R1, c[7];\n" |
|
3116 "MAD result.color, R1.x, R2, R0;\n" |
|
3117 "END\n" |
|
3118 ; |
|
3119 |
|
3120 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = |
|
3121 "!!ARBfp1.0\n" |
|
3122 "PARAM c[10] = { program.local[0..6],\n" |
|
3123 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
3124 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
3125 " { 0.33299461, 0.99999559, 1 } };\n" |
|
3126 "TEMP R0;\n" |
|
3127 "TEMP R1;\n" |
|
3128 "TEMP R2;\n" |
|
3129 "TEMP R3;\n" |
|
3130 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3131 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3132 "ADD R0.xyz, R0, c[3];\n" |
|
3133 "RCP R0.z, R0.z;\n" |
|
3134 "MUL R0.xy, R0, R0.z;\n" |
|
3135 "ABS R0.z, R0.x;\n" |
|
3136 "ABS R0.w, R0.y;\n" |
|
3137 "ADD R0.w, R0, -R0.z;\n" |
|
3138 "ADD R1.x, R0.y, c[7].y;\n" |
|
3139 "ABS R0.w, R0;\n" |
|
3140 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3141 "ABS R0.w, -R0.y;\n" |
|
3142 "MAX R1.x, R0.z, R0.w;\n" |
|
3143 "RCP R1.y, R1.x;\n" |
|
3144 "MIN R1.x, R0.z, R0.w;\n" |
|
3145 "MUL R1.x, R1, R1.y;\n" |
|
3146 "MUL R1.y, R1.x, R1.x;\n" |
|
3147 "MAD R1.z, R1.y, c[8].x, c[8].y;\n" |
|
3148 "MAD R1.z, R1, R1.y, -c[8];\n" |
|
3149 "MAD R1.z, R1, R1.y, c[8].w;\n" |
|
3150 "MAD R1.z, R1, R1.y, -c[9].x;\n" |
|
3151 "MAD R1.y, R1.z, R1, c[9];\n" |
|
3152 "MUL R1.x, R1.y, R1;\n" |
|
3153 "ADD R0.z, -R0, R0.w;\n" |
|
3154 "ADD R1.y, -R1.x, c[7].w;\n" |
|
3155 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3156 "ADD R0.w, -R0.z, c[7].z;\n" |
|
3157 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3158 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3159 "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n" |
|
3160 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
3161 "MUL R2.xyz, R1, c[4].y;\n" |
|
3162 "ADD R0.x, R0, c[0];\n" |
|
3163 "MUL R0.x, R0, c[7];\n" |
|
3164 "FLR R0.y, R0.x;\n" |
|
3165 "ADD R0.x, R0, -R0.y;\n" |
|
3166 "TEX R0, R0, texture[1], 1D;\n" |
|
3167 "MUL R3.xyz, R0.w, R2;\n" |
|
3168 "MUL R2.xyz, R0, c[4].x;\n" |
|
3169 "MAD R2.xyz, R1.w, R2, R3;\n" |
|
3170 "ADD R2.w, -R1, c[9].z;\n" |
|
3171 "MUL R0.xyz, R0, c[5].y;\n" |
|
3172 "MAD R0.xyz, R2.w, R0, R2;\n" |
|
3173 "ADD R2.x, -R0.w, c[9].z;\n" |
|
3174 "MUL R1.xyz, R1, c[5].z;\n" |
|
3175 "MAD result.color.xyz, R2.x, R1, R0;\n" |
|
3176 "MUL R0.x, R0.w, R1.w;\n" |
|
3177 "MUL R0.z, R1.w, R2.x;\n" |
|
3178 "MUL R0.y, R0.w, R2.w;\n" |
|
3179 "DP3 result.color.w, R0, c[5];\n" |
|
3180 "END\n" |
|
3181 ; |
|
3182 |
|
3183 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY_NOMASK = |
|
3184 "!!ARBfp1.0\n" |
|
3185 "PARAM c[8] = { program.local[0..4],\n" |
|
3186 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
3187 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
3188 " { 0.33299461, 0.99999559, 1 } };\n" |
|
3189 "TEMP R0;\n" |
|
3190 "TEMP R1;\n" |
|
3191 "TEMP R2;\n" |
|
3192 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3193 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3194 "ADD R0.xyz, R0, c[3];\n" |
|
3195 "RCP R0.z, R0.z;\n" |
|
3196 "MUL R0.xy, R0, R0.z;\n" |
|
3197 "ABS R0.z, R0.x;\n" |
|
3198 "ABS R0.w, R0.y;\n" |
|
3199 "ADD R0.w, R0, -R0.z;\n" |
|
3200 "ADD R1.x, R0.y, c[5].y;\n" |
|
3201 "ABS R0.w, R0;\n" |
|
3202 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3203 "ABS R0.w, -R0.y;\n" |
|
3204 "MAX R1.x, R0.z, R0.w;\n" |
|
3205 "RCP R1.y, R1.x;\n" |
|
3206 "MIN R1.x, R0.z, R0.w;\n" |
|
3207 "MUL R1.x, R1, R1.y;\n" |
|
3208 "MUL R1.y, R1.x, R1.x;\n" |
|
3209 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" |
|
3210 "MAD R1.z, R1, R1.y, -c[6];\n" |
|
3211 "MAD R1.z, R1, R1.y, c[6].w;\n" |
|
3212 "MAD R1.z, R1, R1.y, -c[7].x;\n" |
|
3213 "MAD R1.y, R1.z, R1, c[7];\n" |
|
3214 "MUL R1.x, R1.y, R1;\n" |
|
3215 "ADD R0.z, -R0, R0.w;\n" |
|
3216 "ADD R1.y, -R1.x, c[5].w;\n" |
|
3217 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3218 "ADD R0.w, -R0.z, c[5].z;\n" |
|
3219 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3220 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3221 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
3222 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
3223 "ADD R0.x, R0, c[0];\n" |
|
3224 "MUL R0.x, R0, c[5];\n" |
|
3225 "FLR R0.y, R0.x;\n" |
|
3226 "ADD R0.x, R0, -R0.y;\n" |
|
3227 "TEX R0, R0, texture[1], 1D;\n" |
|
3228 "ADD R2.x, -R1.w, c[7].z;\n" |
|
3229 "MUL R2.xyz, R0, R2.x;\n" |
|
3230 "MAD R0.xyz, R0, R1, R2;\n" |
|
3231 "ADD R2.x, R0.w, R1.w;\n" |
|
3232 "ADD R2.y, -R0.w, c[7].z;\n" |
|
3233 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
3234 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
3235 "END\n" |
|
3236 ; |
|
3237 |
|
3238 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN_NOMASK = |
|
3239 "!!ARBfp1.0\n" |
|
3240 "PARAM c[8] = { program.local[0..4],\n" |
|
3241 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
3242 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
3243 " { 0.33299461, 0.99999559 } };\n" |
|
3244 "TEMP R0;\n" |
|
3245 "TEMP R1;\n" |
|
3246 "TEMP R2;\n" |
|
3247 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3248 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3249 "ADD R0.xyz, R0, c[3];\n" |
|
3250 "RCP R0.z, R0.z;\n" |
|
3251 "MUL R0.xy, R0, R0.z;\n" |
|
3252 "ABS R0.z, R0.x;\n" |
|
3253 "ABS R0.w, R0.y;\n" |
|
3254 "ADD R0.w, R0, -R0.z;\n" |
|
3255 "ADD R1.x, R0.y, c[5].y;\n" |
|
3256 "ABS R0.w, R0;\n" |
|
3257 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3258 "ABS R0.w, -R0.y;\n" |
|
3259 "MAX R1.x, R0.z, R0.w;\n" |
|
3260 "RCP R1.y, R1.x;\n" |
|
3261 "MIN R1.x, R0.z, R0.w;\n" |
|
3262 "MUL R1.x, R1, R1.y;\n" |
|
3263 "MUL R1.y, R1.x, R1.x;\n" |
|
3264 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" |
|
3265 "MAD R1.z, R1, R1.y, -c[6];\n" |
|
3266 "MAD R1.z, R1, R1.y, c[6].w;\n" |
|
3267 "MAD R1.z, R1, R1.y, -c[7].x;\n" |
|
3268 "MAD R1.y, R1.z, R1, c[7];\n" |
|
3269 "MUL R1.x, R1.y, R1;\n" |
|
3270 "ADD R0.z, -R0, R0.w;\n" |
|
3271 "ADD R1.y, -R1.x, c[5].w;\n" |
|
3272 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3273 "ADD R0.w, -R0.z, c[5].z;\n" |
|
3274 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3275 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3276 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
3277 "ADD R0.x, R0, c[0];\n" |
|
3278 "MUL R0.x, R0, c[5];\n" |
|
3279 "FLR R0.y, R0.x;\n" |
|
3280 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
3281 "ADD R0.x, R0, -R0.y;\n" |
|
3282 "TEX R0, R0, texture[1], 1D;\n" |
|
3283 "ADD R2, R0, R1;\n" |
|
3284 "MAD result.color, -R0, R1, R2;\n" |
|
3285 "END\n" |
|
3286 ; |
|
3287 |
|
3288 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY_NOMASK = |
|
3289 "!!ARBfp1.0\n" |
|
3290 "PARAM c[8] = { program.local[0..4],\n" |
|
3291 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" |
|
3292 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" |
|
3293 " { 3.141593, 0.15915494, 2, 1 } };\n" |
|
3294 "TEMP R0;\n" |
|
3295 "TEMP R1;\n" |
|
3296 "TEMP R2;\n" |
|
3297 "TEMP R3;\n" |
|
3298 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3299 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3300 "ADD R0.xyz, R0, c[3];\n" |
|
3301 "RCP R0.z, R0.z;\n" |
|
3302 "MUL R0.xy, R0, R0.z;\n" |
|
3303 "ABS R0.z, R0.x;\n" |
|
3304 "ABS R0.w, R0.y;\n" |
|
3305 "ADD R0.w, R0, -R0.z;\n" |
|
3306 "ADD R1.x, R0.y, c[5];\n" |
|
3307 "ABS R0.w, R0;\n" |
|
3308 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3309 "ABS R0.w, -R0.y;\n" |
|
3310 "MAX R1.x, R0.z, R0.w;\n" |
|
3311 "RCP R1.y, R1.x;\n" |
|
3312 "MIN R1.x, R0.z, R0.w;\n" |
|
3313 "MUL R1.x, R1, R1.y;\n" |
|
3314 "MUL R1.y, R1.x, R1.x;\n" |
|
3315 "MAD R1.z, R1.y, c[5].y, c[5];\n" |
|
3316 "MAD R1.z, R1, R1.y, -c[5].w;\n" |
|
3317 "MAD R1.z, R1, R1.y, c[6].x;\n" |
|
3318 "MAD R1.z, R1, R1.y, -c[6].y;\n" |
|
3319 "MAD R1.y, R1.z, R1, c[6].z;\n" |
|
3320 "MUL R1.x, R1.y, R1;\n" |
|
3321 "ADD R0.z, -R0, R0.w;\n" |
|
3322 "ADD R1.y, -R1.x, c[6].w;\n" |
|
3323 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3324 "ADD R0.w, -R0.z, c[7].x;\n" |
|
3325 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3326 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3327 "ADD R0.x, R0, c[0];\n" |
|
3328 "MUL R0.x, R0, c[7].y;\n" |
|
3329 "FLR R0.y, R0.x;\n" |
|
3330 "ADD R0.x, R0, -R0.y;\n" |
|
3331 "TEX R0, R0, texture[1], 1D;\n" |
|
3332 "MUL R1.xy, fragment.position, c[4];\n" |
|
3333 "TEX R1, R1, texture[0], 2D;\n" |
|
3334 "ADD R3.xyz, R0.w, -R0;\n" |
|
3335 "ADD R2.xyz, R1.w, -R1;\n" |
|
3336 "MUL R2.xyz, R2, R3;\n" |
|
3337 "ADD R2.w, -R1, c[7];\n" |
|
3338 "MUL R2.xyz, R2, c[7].z;\n" |
|
3339 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
3340 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
3341 "MUL R3.xyz, R0, R2.w;\n" |
|
3342 "MUL R0.xyz, R0, R1;\n" |
|
3343 "ADD R2.w, -R0, c[7];\n" |
|
3344 "MAD R0.xyz, R0, c[7].z, R3;\n" |
|
3345 "MAD R0.xyz, R1, R2.w, R0;\n" |
|
3346 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
3347 "MUL R1.xyz, R1, c[7].z;\n" |
|
3348 "ADD R2.w, R0, R1;\n" |
|
3349 "ADD R2.xyz, R2, -R0;\n" |
|
3350 "SGE R1.xyz, R1, R1.w;\n" |
|
3351 "MAD result.color.xyz, R1, R2, R0;\n" |
|
3352 "MAD result.color.w, -R0, R1, R2;\n" |
|
3353 "END\n" |
|
3354 ; |
|
3355 |
|
3356 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN_NOMASK = |
|
3357 "!!ARBfp1.0\n" |
|
3358 "PARAM c[8] = { program.local[0..4],\n" |
|
3359 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
3360 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
3361 " { 0.33299461, 0.99999559, 1 } };\n" |
|
3362 "TEMP R0;\n" |
|
3363 "TEMP R1;\n" |
|
3364 "TEMP R2;\n" |
|
3365 "TEMP R3;\n" |
|
3366 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3367 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3368 "ADD R0.xyz, R0, c[3];\n" |
|
3369 "RCP R0.z, R0.z;\n" |
|
3370 "MUL R0.xy, R0, R0.z;\n" |
|
3371 "ABS R0.z, R0.x;\n" |
|
3372 "ABS R0.w, R0.y;\n" |
|
3373 "ADD R0.w, R0, -R0.z;\n" |
|
3374 "ADD R1.x, R0.y, c[5].y;\n" |
|
3375 "ABS R0.w, R0;\n" |
|
3376 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3377 "ABS R0.w, -R0.y;\n" |
|
3378 "MAX R1.x, R0.z, R0.w;\n" |
|
3379 "RCP R1.y, R1.x;\n" |
|
3380 "MIN R1.x, R0.z, R0.w;\n" |
|
3381 "MUL R1.x, R1, R1.y;\n" |
|
3382 "MUL R1.y, R1.x, R1.x;\n" |
|
3383 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" |
|
3384 "MAD R1.z, R1, R1.y, -c[6];\n" |
|
3385 "MAD R1.z, R1, R1.y, c[6].w;\n" |
|
3386 "MAD R1.z, R1, R1.y, -c[7].x;\n" |
|
3387 "MAD R1.y, R1.z, R1, c[7];\n" |
|
3388 "MUL R1.x, R1.y, R1;\n" |
|
3389 "ADD R0.z, -R0, R0.w;\n" |
|
3390 "ADD R1.y, -R1.x, c[5].w;\n" |
|
3391 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3392 "ADD R0.w, -R0.z, c[5].z;\n" |
|
3393 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3394 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3395 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
3396 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
3397 "ADD R0.x, R0, c[0];\n" |
|
3398 "MUL R0.x, R0, c[5];\n" |
|
3399 "FLR R0.y, R0.x;\n" |
|
3400 "ADD R0.x, R0, -R0.y;\n" |
|
3401 "TEX R0, R0, texture[1], 1D;\n" |
|
3402 "MUL R2.xyz, R0, R1.w;\n" |
|
3403 "MUL R3.xyz, R0.w, R1;\n" |
|
3404 "MIN R2.xyz, R2, R3;\n" |
|
3405 "ADD R2.w, -R1, c[7].z;\n" |
|
3406 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
3407 "ADD R2.x, R0.w, R1.w;\n" |
|
3408 "ADD R2.y, -R0.w, c[7].z;\n" |
|
3409 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
3410 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
3411 "END\n" |
|
3412 ; |
|
3413 |
|
3414 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN_NOMASK = |
|
3415 "!!ARBfp1.0\n" |
|
3416 "PARAM c[8] = { program.local[0..4],\n" |
|
3417 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
3418 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
3419 " { 0.33299461, 0.99999559, 1 } };\n" |
|
3420 "TEMP R0;\n" |
|
3421 "TEMP R1;\n" |
|
3422 "TEMP R2;\n" |
|
3423 "TEMP R3;\n" |
|
3424 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3425 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3426 "ADD R0.xyz, R0, c[3];\n" |
|
3427 "RCP R0.z, R0.z;\n" |
|
3428 "MUL R0.xy, R0, R0.z;\n" |
|
3429 "ABS R0.z, R0.x;\n" |
|
3430 "ABS R0.w, R0.y;\n" |
|
3431 "ADD R0.w, R0, -R0.z;\n" |
|
3432 "ADD R1.x, R0.y, c[5].y;\n" |
|
3433 "ABS R0.w, R0;\n" |
|
3434 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3435 "ABS R0.w, -R0.y;\n" |
|
3436 "MAX R1.x, R0.z, R0.w;\n" |
|
3437 "RCP R1.y, R1.x;\n" |
|
3438 "MIN R1.x, R0.z, R0.w;\n" |
|
3439 "MUL R1.x, R1, R1.y;\n" |
|
3440 "MUL R1.y, R1.x, R1.x;\n" |
|
3441 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" |
|
3442 "MAD R1.z, R1, R1.y, -c[6];\n" |
|
3443 "MAD R1.z, R1, R1.y, c[6].w;\n" |
|
3444 "MAD R1.z, R1, R1.y, -c[7].x;\n" |
|
3445 "MAD R1.y, R1.z, R1, c[7];\n" |
|
3446 "MUL R1.x, R1.y, R1;\n" |
|
3447 "ADD R0.z, -R0, R0.w;\n" |
|
3448 "ADD R1.y, -R1.x, c[5].w;\n" |
|
3449 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3450 "ADD R0.w, -R0.z, c[5].z;\n" |
|
3451 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3452 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3453 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
3454 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
3455 "ADD R0.x, R0, c[0];\n" |
|
3456 "MUL R0.x, R0, c[5];\n" |
|
3457 "FLR R0.y, R0.x;\n" |
|
3458 "ADD R0.x, R0, -R0.y;\n" |
|
3459 "TEX R0, R0, texture[1], 1D;\n" |
|
3460 "MUL R2.xyz, R0, R1.w;\n" |
|
3461 "MUL R3.xyz, R0.w, R1;\n" |
|
3462 "MAX R2.xyz, R2, R3;\n" |
|
3463 "ADD R2.w, -R1, c[7].z;\n" |
|
3464 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
3465 "ADD R2.x, R0.w, R1.w;\n" |
|
3466 "ADD R2.y, -R0.w, c[7].z;\n" |
|
3467 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
3468 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
3469 "END\n" |
|
3470 ; |
|
3471 |
|
3472 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE_NOMASK = |
|
3473 "!!ARBfp1.0\n" |
|
3474 "PARAM c[8] = { program.local[0..4],\n" |
|
3475 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" |
|
3476 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" |
|
3477 " { 3.141593, 0.15915494, 1, 1e-006 } };\n" |
|
3478 "TEMP R0;\n" |
|
3479 "TEMP R1;\n" |
|
3480 "TEMP R2;\n" |
|
3481 "TEMP R3;\n" |
|
3482 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3483 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3484 "ADD R0.xyz, R0, c[3];\n" |
|
3485 "RCP R0.z, R0.z;\n" |
|
3486 "MUL R0.xy, R0, R0.z;\n" |
|
3487 "ABS R0.z, R0.x;\n" |
|
3488 "ABS R0.w, R0.y;\n" |
|
3489 "ADD R0.w, R0, -R0.z;\n" |
|
3490 "ADD R1.x, R0.y, c[5];\n" |
|
3491 "ABS R0.w, R0;\n" |
|
3492 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3493 "ABS R0.w, -R0.y;\n" |
|
3494 "MAX R1.x, R0.z, R0.w;\n" |
|
3495 "RCP R1.y, R1.x;\n" |
|
3496 "MIN R1.x, R0.z, R0.w;\n" |
|
3497 "MUL R1.x, R1, R1.y;\n" |
|
3498 "MUL R1.y, R1.x, R1.x;\n" |
|
3499 "MAD R1.z, R1.y, c[5].y, c[5];\n" |
|
3500 "MAD R1.z, R1, R1.y, -c[5].w;\n" |
|
3501 "MAD R1.z, R1, R1.y, c[6].x;\n" |
|
3502 "MAD R1.z, R1, R1.y, -c[6].y;\n" |
|
3503 "MAD R1.y, R1.z, R1, c[6].z;\n" |
|
3504 "MUL R1.x, R1.y, R1;\n" |
|
3505 "ADD R1.y, -R1.x, c[6].w;\n" |
|
3506 "ADD R0.z, -R0, R0.w;\n" |
|
3507 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3508 "ADD R0.w, -R0.z, c[7].x;\n" |
|
3509 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3510 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3511 "ADD R0.x, R0, c[0];\n" |
|
3512 "MUL R0.x, R0, c[7].y;\n" |
|
3513 "FLR R0.y, R0.x;\n" |
|
3514 "ADD R0.x, R0, -R0.y;\n" |
|
3515 "TEX R0, R0, texture[1], 1D;\n" |
|
3516 "MAX R1.x, R0.w, c[7].w;\n" |
|
3517 "RCP R1.x, R1.x;\n" |
|
3518 "MAD R1.xyz, -R0, R1.x, c[7].z;\n" |
|
3519 "MAX R2.xyz, R1, c[7].w;\n" |
|
3520 "MUL R1.xy, fragment.position, c[4];\n" |
|
3521 "TEX R1, R1, texture[0], 2D;\n" |
|
3522 "ADD R2.w, -R0, c[7].z;\n" |
|
3523 "MUL R3.xyz, R1, R2.w;\n" |
|
3524 "ADD R2.w, -R1, c[7].z;\n" |
|
3525 "MAD R3.xyz, R0, R2.w, R3;\n" |
|
3526 "MUL R1.xyz, R0.w, R1;\n" |
|
3527 "MAD R0.xyz, R0, R1.w, R1;\n" |
|
3528 "MUL R2.w, R0, R1;\n" |
|
3529 "RCP R2.x, R2.x;\n" |
|
3530 "RCP R2.y, R2.y;\n" |
|
3531 "RCP R2.z, R2.z;\n" |
|
3532 "MAD R2.xyz, R1, R2, R3;\n" |
|
3533 "MAD R3.xyz, R0.w, R1.w, R3;\n" |
|
3534 "ADD R1.x, R0.w, R1.w;\n" |
|
3535 "ADD R3.xyz, R3, -R2;\n" |
|
3536 "SGE R0.xyz, R0, R2.w;\n" |
|
3537 "MAD result.color.xyz, R0, R3, R2;\n" |
|
3538 "MAD result.color.w, -R0, R1, R1.x;\n" |
|
3539 "END\n" |
|
3540 ; |
|
3541 |
|
3542 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN_NOMASK = |
|
3543 "!!ARBfp1.0\n" |
|
3544 "PARAM c[8] = { program.local[0..4],\n" |
|
3545 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" |
|
3546 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" |
|
3547 " { 3.141593, 0.15915494, 1, 9.9999997e-006 } };\n" |
|
3548 "TEMP R0;\n" |
|
3549 "TEMP R1;\n" |
|
3550 "TEMP R2;\n" |
|
3551 "TEMP R3;\n" |
|
3552 "TEMP R4;\n" |
|
3553 "TEMP R5;\n" |
|
3554 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3555 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3556 "ADD R0.xyz, R0, c[3];\n" |
|
3557 "RCP R0.z, R0.z;\n" |
|
3558 "MUL R0.xy, R0, R0.z;\n" |
|
3559 "ABS R0.w, R0.x;\n" |
|
3560 "ABS R0.z, R0.y;\n" |
|
3561 "ADD R0.z, R0, -R0.w;\n" |
|
3562 "ADD R1.x, R0.y, c[5];\n" |
|
3563 "ABS R0.z, R0;\n" |
|
3564 "CMP R0.y, -R0.z, R0, R1.x;\n" |
|
3565 "ABS R0.z, -R0.y;\n" |
|
3566 "MAX R1.x, R0.w, R0.z;\n" |
|
3567 "RCP R1.y, R1.x;\n" |
|
3568 "MIN R1.x, R0.w, R0.z;\n" |
|
3569 "MUL R1.x, R1, R1.y;\n" |
|
3570 "MUL R1.y, R1.x, R1.x;\n" |
|
3571 "MAD R1.z, R1.y, c[5].y, c[5];\n" |
|
3572 "MAD R1.z, R1, R1.y, -c[5].w;\n" |
|
3573 "MAD R1.z, R1, R1.y, c[6].x;\n" |
|
3574 "MAD R1.z, R1, R1.y, -c[6].y;\n" |
|
3575 "MAD R1.y, R1.z, R1, c[6].z;\n" |
|
3576 "MUL R1.x, R1.y, R1;\n" |
|
3577 "ADD R1.y, -R1.x, c[6].w;\n" |
|
3578 "ADD R0.z, -R0.w, R0;\n" |
|
3579 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3580 "ADD R0.w, -R0.z, c[7].x;\n" |
|
3581 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3582 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3583 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
3584 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
3585 "ADD R0.x, R0, c[0];\n" |
|
3586 "MUL R0.x, R0, c[7].y;\n" |
|
3587 "FLR R0.y, R0.x;\n" |
|
3588 "ADD R0.x, R0, -R0.y;\n" |
|
3589 "TEX R0, R0, texture[1], 1D;\n" |
|
3590 "MUL R2.xyz, R0.w, R1;\n" |
|
3591 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
3592 "ADD R2.w, -R1, c[7].z;\n" |
|
3593 "MAD R2.xyz, -R0.w, R1.w, R3;\n" |
|
3594 "MUL R4.xyz, R0.w, R2;\n" |
|
3595 "MAX R2.xyz, R0, c[7].w;\n" |
|
3596 "MUL R5.xyz, R0, R2.w;\n" |
|
3597 "ADD R3.w, -R0, c[7].z;\n" |
|
3598 "RCP R2.x, R2.x;\n" |
|
3599 "RCP R2.y, R2.y;\n" |
|
3600 "RCP R2.z, R2.z;\n" |
|
3601 "MAD R2.xyz, R4, R2, R5;\n" |
|
3602 "MUL R4.xyz, R1, R3.w;\n" |
|
3603 "MAD R1.xyz, R1, R3.w, R2;\n" |
|
3604 "MAD R0.xyz, R0, R2.w, R4;\n" |
|
3605 "MUL R2.x, R0.w, R1.w;\n" |
|
3606 "ADD R2.w, R0, R1;\n" |
|
3607 "ADD R1.xyz, R1, -R0;\n" |
|
3608 "SGE R2.xyz, R3, R2.x;\n" |
|
3609 "MAD result.color.xyz, R2, R1, R0;\n" |
|
3610 "MAD result.color.w, -R0, R1, R2;\n" |
|
3611 "END\n" |
|
3612 ; |
|
3613 |
|
3614 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT_NOMASK = |
|
3615 "!!ARBfp1.0\n" |
|
3616 "PARAM c[8] = { program.local[0..4],\n" |
|
3617 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" |
|
3618 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" |
|
3619 " { 3.141593, 0.15915494, 2, 1 } };\n" |
|
3620 "TEMP R0;\n" |
|
3621 "TEMP R1;\n" |
|
3622 "TEMP R2;\n" |
|
3623 "TEMP R3;\n" |
|
3624 "TEMP R4;\n" |
|
3625 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3626 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3627 "ADD R0.xyz, R0, c[3];\n" |
|
3628 "RCP R0.z, R0.z;\n" |
|
3629 "MUL R0.xy, R0, R0.z;\n" |
|
3630 "ABS R0.z, R0.x;\n" |
|
3631 "ABS R0.w, R0.y;\n" |
|
3632 "ADD R0.w, R0, -R0.z;\n" |
|
3633 "ADD R1.x, R0.y, c[5];\n" |
|
3634 "ABS R0.w, R0;\n" |
|
3635 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3636 "ABS R0.w, -R0.y;\n" |
|
3637 "MAX R1.x, R0.z, R0.w;\n" |
|
3638 "RCP R1.y, R1.x;\n" |
|
3639 "MIN R1.x, R0.z, R0.w;\n" |
|
3640 "MUL R1.x, R1, R1.y;\n" |
|
3641 "MUL R1.y, R1.x, R1.x;\n" |
|
3642 "MAD R1.z, R1.y, c[5].y, c[5];\n" |
|
3643 "MAD R1.z, R1, R1.y, -c[5].w;\n" |
|
3644 "MAD R1.z, R1, R1.y, c[6].x;\n" |
|
3645 "MAD R1.z, R1, R1.y, -c[6].y;\n" |
|
3646 "MAD R1.y, R1.z, R1, c[6].z;\n" |
|
3647 "MUL R1.x, R1.y, R1;\n" |
|
3648 "ADD R0.z, -R0, R0.w;\n" |
|
3649 "ADD R1.y, -R1.x, c[6].w;\n" |
|
3650 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3651 "ADD R0.w, -R0.z, c[7].x;\n" |
|
3652 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3653 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3654 "ADD R0.x, R0, c[0];\n" |
|
3655 "MUL R0.x, R0, c[7].y;\n" |
|
3656 "FLR R0.y, R0.x;\n" |
|
3657 "ADD R0.x, R0, -R0.y;\n" |
|
3658 "TEX R0, R0, texture[1], 1D;\n" |
|
3659 "MUL R1.xy, fragment.position, c[4];\n" |
|
3660 "TEX R1, R1, texture[0], 2D;\n" |
|
3661 "ADD R2.w, -R1, c[7];\n" |
|
3662 "ADD R3.xyz, R0.w, -R0;\n" |
|
3663 "ADD R2.xyz, R1.w, -R1;\n" |
|
3664 "MUL R2.xyz, R2, R3;\n" |
|
3665 "MUL R2.xyz, R2, c[7].z;\n" |
|
3666 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
3667 "MUL R4.xyz, R0, R2.w;\n" |
|
3668 "MUL R3.xyz, R0, R1;\n" |
|
3669 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
3670 "ADD R2.w, -R0, c[7];\n" |
|
3671 "MUL R0.xyz, R0, c[7].z;\n" |
|
3672 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
3673 "MAD R3.xyz, R3, c[7].z, R4;\n" |
|
3674 "MAD R1.xyz, R1, R2.w, R3;\n" |
|
3675 "ADD R2.w, R0, R1;\n" |
|
3676 "ADD R2.xyz, R2, -R1;\n" |
|
3677 "SGE R0.xyz, R0, R0.w;\n" |
|
3678 "MAD result.color.xyz, R0, R2, R1;\n" |
|
3679 "MAD result.color.w, -R0, R1, R2;\n" |
|
3680 "END\n" |
|
3681 ; |
|
3682 |
|
3683 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK = |
|
3684 "!!ARBfp1.0\n" |
|
3685 "PARAM c[9] = { program.local[0..4],\n" |
|
3686 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" |
|
3687 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" |
|
3688 " { 3.141593, 0.15915494, 1, 2 },\n" |
|
3689 " { 9.9999997e-006, 8, 3 } };\n" |
|
3690 "TEMP R0;\n" |
|
3691 "TEMP R1;\n" |
|
3692 "TEMP R2;\n" |
|
3693 "TEMP R3;\n" |
|
3694 "TEMP R4;\n" |
|
3695 "TEMP R5;\n" |
|
3696 "TEMP R6;\n" |
|
3697 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3698 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3699 "ADD R0.xyz, R0, c[3];\n" |
|
3700 "RCP R0.z, R0.z;\n" |
|
3701 "MUL R0.xy, R0, R0.z;\n" |
|
3702 "ABS R0.w, R0.x;\n" |
|
3703 "ABS R0.z, R0.y;\n" |
|
3704 "ADD R0.z, R0, -R0.w;\n" |
|
3705 "ADD R1.x, R0.y, c[5];\n" |
|
3706 "ABS R0.z, R0;\n" |
|
3707 "CMP R0.y, -R0.z, R0, R1.x;\n" |
|
3708 "ABS R0.z, -R0.y;\n" |
|
3709 "MAX R1.x, R0.w, R0.z;\n" |
|
3710 "RCP R1.y, R1.x;\n" |
|
3711 "MIN R1.x, R0.w, R0.z;\n" |
|
3712 "MUL R1.x, R1, R1.y;\n" |
|
3713 "MUL R1.y, R1.x, R1.x;\n" |
|
3714 "MAD R1.z, R1.y, c[5].y, c[5];\n" |
|
3715 "MAD R1.z, R1, R1.y, -c[5].w;\n" |
|
3716 "MAD R1.z, R1, R1.y, c[6].x;\n" |
|
3717 "MAD R1.z, R1, R1.y, -c[6].y;\n" |
|
3718 "MAD R1.y, R1.z, R1, c[6].z;\n" |
|
3719 "MUL R1.x, R1.y, R1;\n" |
|
3720 "ADD R1.y, -R1.x, c[6].w;\n" |
|
3721 "ADD R0.z, -R0.w, R0;\n" |
|
3722 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3723 "ADD R0.w, -R0.z, c[7].x;\n" |
|
3724 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3725 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
3726 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3727 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
3728 "MAX R0.y, R1.w, c[8].x;\n" |
|
3729 "RCP R2.w, R0.y;\n" |
|
3730 "MUL R5.xyz, R1, R2.w;\n" |
|
3731 "RSQ R2.x, R5.x;\n" |
|
3732 "RSQ R2.z, R5.z;\n" |
|
3733 "RSQ R2.y, R5.y;\n" |
|
3734 "ADD R0.x, R0, c[0];\n" |
|
3735 "MUL R0.x, R0, c[7].y;\n" |
|
3736 "FLR R0.y, R0.x;\n" |
|
3737 "ADD R0.x, R0, -R0.y;\n" |
|
3738 "TEX R0, R0, texture[1], 1D;\n" |
|
3739 "MAD R3.xyz, R0, c[7].w, -R0.w;\n" |
|
3740 "MAD R6.xyz, -R5, c[8].y, c[8].z;\n" |
|
3741 "RCP R2.x, R2.x;\n" |
|
3742 "RCP R2.z, R2.z;\n" |
|
3743 "RCP R2.y, R2.y;\n" |
|
3744 "MAD R2.xyz, R1.w, R2, -R1;\n" |
|
3745 "MUL R2.xyz, R3, R2;\n" |
|
3746 "MAD R4.xyz, R0.w, R1, R2;\n" |
|
3747 "MAD R2.xyz, -R1, R2.w, c[7].z;\n" |
|
3748 "MUL R5.xyz, R2, R3;\n" |
|
3749 "MAD R2.xyz, -R2, R3, R0.w;\n" |
|
3750 "MAD R6.xyz, -R5, R6, R0.w;\n" |
|
3751 "MAD R5.xyz, -R1, R6, R4;\n" |
|
3752 "MUL R3.xyz, R0, c[7].w;\n" |
|
3753 "MUL R4.xyz, R1, c[8].y;\n" |
|
3754 "MUL R6.xyz, R1, R6;\n" |
|
3755 "SGE R4.xyz, R4, R1.w;\n" |
|
3756 "MAD R4.xyz, R4, R5, R6;\n" |
|
3757 "MAD R4.xyz, -R1, R2, R4;\n" |
|
3758 "MUL R2.xyz, R1, R2;\n" |
|
3759 "SGE R3.xyz, R3, R0.w;\n" |
|
3760 "MAD R2.xyz, R3, R4, R2;\n" |
|
3761 "ADD R2.w, -R1, c[7].z;\n" |
|
3762 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
3763 "ADD R0.x, R0.w, R1.w;\n" |
|
3764 "ADD R0.y, -R0.w, c[7].z;\n" |
|
3765 "MAD result.color.xyz, R1, R0.y, R2;\n" |
|
3766 "MAD result.color.w, -R0, R1, R0.x;\n" |
|
3767 "END\n" |
|
3768 ; |
|
3769 |
|
3770 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE_NOMASK = |
|
3771 "!!ARBfp1.0\n" |
|
3772 "PARAM c[8] = { program.local[0..4],\n" |
|
3773 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
3774 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
3775 " { 0.33299461, 0.99999559, 2 } };\n" |
|
3776 "TEMP R0;\n" |
|
3777 "TEMP R1;\n" |
|
3778 "TEMP R2;\n" |
|
3779 "TEMP R3;\n" |
|
3780 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3781 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3782 "ADD R0.xyz, R0, c[3];\n" |
|
3783 "RCP R0.z, R0.z;\n" |
|
3784 "MUL R0.xy, R0, R0.z;\n" |
|
3785 "ABS R0.z, R0.x;\n" |
|
3786 "ABS R0.w, R0.y;\n" |
|
3787 "ADD R0.w, R0, -R0.z;\n" |
|
3788 "ADD R1.x, R0.y, c[5].y;\n" |
|
3789 "ABS R0.w, R0;\n" |
|
3790 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3791 "ABS R0.w, -R0.y;\n" |
|
3792 "MAX R1.x, R0.z, R0.w;\n" |
|
3793 "RCP R1.y, R1.x;\n" |
|
3794 "MIN R1.x, R0.z, R0.w;\n" |
|
3795 "MUL R1.x, R1, R1.y;\n" |
|
3796 "MUL R1.y, R1.x, R1.x;\n" |
|
3797 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" |
|
3798 "MAD R1.z, R1, R1.y, -c[6];\n" |
|
3799 "MAD R1.z, R1, R1.y, c[6].w;\n" |
|
3800 "MAD R1.z, R1, R1.y, -c[7].x;\n" |
|
3801 "MAD R1.y, R1.z, R1, c[7];\n" |
|
3802 "MUL R1.x, R1.y, R1;\n" |
|
3803 "ADD R0.z, -R0, R0.w;\n" |
|
3804 "ADD R1.y, -R1.x, c[5].w;\n" |
|
3805 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3806 "ADD R0.w, -R0.z, c[5].z;\n" |
|
3807 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3808 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3809 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
3810 "ADD R0.x, R0, c[0];\n" |
|
3811 "MUL R0.x, R0, c[5];\n" |
|
3812 "FLR R0.y, R0.x;\n" |
|
3813 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
3814 "ADD R0.x, R0, -R0.y;\n" |
|
3815 "TEX R0, R0, texture[1], 1D;\n" |
|
3816 "MUL R2.xyz, R0, R1.w;\n" |
|
3817 "MUL R3.xyz, R0.w, R1;\n" |
|
3818 "ADD R0.xyz, R0, R1;\n" |
|
3819 "MIN R2.xyz, R2, R3;\n" |
|
3820 "ADD R1.x, R0.w, R1.w;\n" |
|
3821 "MAD result.color.xyz, -R2, c[7].z, R0;\n" |
|
3822 "MAD result.color.w, -R0, R1, R1.x;\n" |
|
3823 "END\n" |
|
3824 ; |
|
3825 |
|
3826 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION_NOMASK = |
|
3827 "!!ARBfp1.0\n" |
|
3828 "PARAM c[8] = { program.local[0..4],\n" |
|
3829 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
3830 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
3831 " { 0.33299461, 0.99999559, 2, 1 } };\n" |
|
3832 "TEMP R0;\n" |
|
3833 "TEMP R1;\n" |
|
3834 "TEMP R2;\n" |
|
3835 "TEMP R3;\n" |
|
3836 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3837 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3838 "ADD R0.xyz, R0, c[3];\n" |
|
3839 "RCP R0.z, R0.z;\n" |
|
3840 "MUL R0.xy, R0, R0.z;\n" |
|
3841 "ABS R0.z, R0.x;\n" |
|
3842 "ABS R0.w, R0.y;\n" |
|
3843 "ADD R0.w, R0, -R0.z;\n" |
|
3844 "ADD R1.x, R0.y, c[5].y;\n" |
|
3845 "ABS R0.w, R0;\n" |
|
3846 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3847 "ABS R0.w, -R0.y;\n" |
|
3848 "MAX R1.x, R0.z, R0.w;\n" |
|
3849 "RCP R1.y, R1.x;\n" |
|
3850 "MIN R1.x, R0.z, R0.w;\n" |
|
3851 "MUL R1.x, R1, R1.y;\n" |
|
3852 "MUL R1.y, R1.x, R1.x;\n" |
|
3853 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" |
|
3854 "MAD R1.z, R1, R1.y, -c[6];\n" |
|
3855 "MAD R1.z, R1, R1.y, c[6].w;\n" |
|
3856 "MAD R1.z, R1, R1.y, -c[7].x;\n" |
|
3857 "MAD R1.y, R1.z, R1, c[7];\n" |
|
3858 "MUL R1.x, R1.y, R1;\n" |
|
3859 "ADD R0.z, -R0, R0.w;\n" |
|
3860 "ADD R1.y, -R1.x, c[5].w;\n" |
|
3861 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3862 "ADD R0.w, -R0.z, c[5].z;\n" |
|
3863 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3864 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3865 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
3866 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
3867 "ADD R0.x, R0, c[0];\n" |
|
3868 "MUL R0.x, R0, c[5];\n" |
|
3869 "FLR R0.y, R0.x;\n" |
|
3870 "ADD R0.x, R0, -R0.y;\n" |
|
3871 "TEX R0, R0, texture[1], 1D;\n" |
|
3872 "MUL R2.xyz, R0.w, R1;\n" |
|
3873 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
3874 "MUL R2.xyz, R0, R1;\n" |
|
3875 "MAD R2.xyz, -R2, c[7].z, R3;\n" |
|
3876 "ADD R2.w, -R1, c[7];\n" |
|
3877 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
3878 "ADD R2.x, R0.w, R1.w;\n" |
|
3879 "ADD R2.y, -R0.w, c[7].w;\n" |
|
3880 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
3881 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
3882 "END\n" |
|
3883 ; |
|
3884 |
|
3885 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_MASK = |
|
3886 "!!ARBfp1.0\n" |
|
3887 "PARAM c[10] = { program.local[0..6],\n" |
|
3888 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
3889 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
3890 " { 0.33299461, 0.99999559 } };\n" |
|
3891 "TEMP R0;\n" |
|
3892 "TEMP R1;\n" |
|
3893 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3894 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3895 "ADD R0.xyz, R0, c[3];\n" |
|
3896 "RCP R0.z, R0.z;\n" |
|
3897 "MUL R0.xy, R0, R0.z;\n" |
|
3898 "ABS R0.z, R0.x;\n" |
|
3899 "ABS R0.w, R0.y;\n" |
|
3900 "ADD R0.w, R0, -R0.z;\n" |
|
3901 "ADD R1.x, R0.y, c[7].y;\n" |
|
3902 "ABS R0.w, R0;\n" |
|
3903 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3904 "ABS R0.w, -R0.y;\n" |
|
3905 "MAX R1.x, R0.z, R0.w;\n" |
|
3906 "RCP R1.y, R1.x;\n" |
|
3907 "MIN R1.x, R0.z, R0.w;\n" |
|
3908 "MUL R1.x, R1, R1.y;\n" |
|
3909 "MUL R1.y, R1.x, R1.x;\n" |
|
3910 "MAD R1.z, R1.y, c[8].x, c[8].y;\n" |
|
3911 "MAD R1.z, R1, R1.y, -c[8];\n" |
|
3912 "MAD R1.z, R1, R1.y, c[8].w;\n" |
|
3913 "MAD R1.z, R1, R1.y, -c[9].x;\n" |
|
3914 "MAD R1.y, R1.z, R1, c[9];\n" |
|
3915 "MUL R1.x, R1.y, R1;\n" |
|
3916 "ADD R1.y, -R1.x, c[7].w;\n" |
|
3917 "ADD R0.z, -R0, R0.w;\n" |
|
3918 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3919 "ADD R0.w, -R0.z, c[7].z;\n" |
|
3920 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3921 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3922 "ADD R0.x, R0, c[0];\n" |
|
3923 "MUL R1.x, R0, c[7];\n" |
|
3924 "FLR R1.y, R1.x;\n" |
|
3925 "ADD R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
3926 "MUL R0.xy, R0.zwzw, c[4];\n" |
|
3927 "TEX R0, R0, texture[0], 2D;\n" |
|
3928 "ADD R1.x, R1, -R1.y;\n" |
|
3929 "DP4 R1.y, R0, c[6];\n" |
|
3930 "TEX R0, R1, texture[1], 1D;\n" |
|
3931 "MUL result.color, R0, R1.y;\n" |
|
3932 "END\n" |
|
3933 ; |
|
3934 |
|
3935 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_NOMASK = |
|
3936 "!!ARBfp1.0\n" |
|
3937 "PARAM c[7] = { program.local[0..3],\n" |
|
3938 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" |
|
3939 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" |
|
3940 " { 0.33299461, 0.99999559 } };\n" |
|
3941 "TEMP R0;\n" |
|
3942 "TEMP R1;\n" |
|
3943 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3944 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3945 "ADD R0.xyz, R0, c[3];\n" |
|
3946 "RCP R0.z, R0.z;\n" |
|
3947 "MUL R0.xy, R0, R0.z;\n" |
|
3948 "ABS R0.z, R0.x;\n" |
|
3949 "ABS R0.w, R0.y;\n" |
|
3950 "ADD R0.w, R0, -R0.z;\n" |
|
3951 "ADD R1.x, R0.y, c[4].y;\n" |
|
3952 "ABS R0.w, R0;\n" |
|
3953 "CMP R0.y, -R0.w, R0, R1.x;\n" |
|
3954 "ABS R0.w, -R0.y;\n" |
|
3955 "MAX R1.x, R0.z, R0.w;\n" |
|
3956 "RCP R1.y, R1.x;\n" |
|
3957 "MIN R1.x, R0.z, R0.w;\n" |
|
3958 "MUL R1.x, R1, R1.y;\n" |
|
3959 "MUL R1.y, R1.x, R1.x;\n" |
|
3960 "MAD R1.z, R1.y, c[5].x, c[5].y;\n" |
|
3961 "MAD R1.z, R1, R1.y, -c[5];\n" |
|
3962 "MAD R1.z, R1, R1.y, c[5].w;\n" |
|
3963 "MAD R1.z, R1, R1.y, -c[6].x;\n" |
|
3964 "MAD R1.y, R1.z, R1, c[6];\n" |
|
3965 "MUL R1.x, R1.y, R1;\n" |
|
3966 "ADD R0.z, -R0, R0.w;\n" |
|
3967 "ADD R1.y, -R1.x, c[4].w;\n" |
|
3968 "CMP R0.z, -R0, R1.y, R1.x;\n" |
|
3969 "ADD R0.w, -R0.z, c[4].z;\n" |
|
3970 "CMP R0.x, R0, R0.w, R0.z;\n" |
|
3971 "CMP R0.x, -R0.y, -R0, R0;\n" |
|
3972 "ADD R0.x, R0, c[0];\n" |
|
3973 "MUL R0.x, R0, c[4];\n" |
|
3974 "FLR R0.y, R0.x;\n" |
|
3975 "ADD R0.x, R0, -R0.y;\n" |
|
3976 "TEX result.color, R0, texture[0], 1D;\n" |
|
3977 "END\n" |
|
3978 ; |
|
3979 |
|
3980 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = |
|
3981 "!!ARBfp1.0\n" |
|
3982 "PARAM c[11] = { program.local[0..9],\n" |
|
3983 " { 1 } };\n" |
|
3984 "TEMP R0;\n" |
|
3985 "TEMP R1;\n" |
|
3986 "TEMP R2;\n" |
|
3987 "TEMP R3;\n" |
|
3988 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
3989 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
3990 "ADD R0.xyz, R0, c[3];\n" |
|
3991 "RCP R0.z, R0.z;\n" |
|
3992 "MUL R0.xy, R0, R0.z;\n" |
|
3993 "MUL R0.zw, R0.xyxy, c[0].xyxy;\n" |
|
3994 "ADD R1.x, R0.z, R0.w;\n" |
|
3995 "MUL R0.xy, fragment.position, c[7];\n" |
|
3996 "TEX R0, R0, texture[0], 2D;\n" |
|
3997 "MUL R1.x, R1, c[0].z;\n" |
|
3998 "TEX R1, R1, texture[2], 1D;\n" |
|
3999 "MUL R2.xyz, R0, c[4].y;\n" |
|
4000 "MUL R3.xyz, R1.w, R2;\n" |
|
4001 "MUL R2.xyz, R1, c[4].x;\n" |
|
4002 "MAD R2.xyz, R0.w, R2, R3;\n" |
|
4003 "ADD R3.xy, fragment.position, c[8];\n" |
|
4004 "ADD R2.w, -R0, c[10].x;\n" |
|
4005 "MUL R1.xyz, R1, c[5].y;\n" |
|
4006 "MAD R2.xyz, R2.w, R1, R2;\n" |
|
4007 "MUL R1.xyz, R0, c[5].z;\n" |
|
4008 "ADD R3.z, -R1.w, c[10].x;\n" |
|
4009 "MAD R2.xyz, R3.z, R1, R2;\n" |
|
4010 "MUL R1.y, R1.w, R2.w;\n" |
|
4011 "MUL R1.x, R1.w, R0.w;\n" |
|
4012 "MUL R1.z, R0.w, R3;\n" |
|
4013 "DP3 R2.w, R1, c[5];\n" |
|
4014 "MUL R3.xy, R3, c[6];\n" |
|
4015 "TEX R1, R3, texture[1], 2D;\n" |
|
4016 "ADD R2, R2, -R0;\n" |
|
4017 "DP4 R1.x, R1, c[9];\n" |
|
4018 "MAD result.color, R1.x, R2, R0;\n" |
|
4019 "END\n" |
|
4020 ; |
|
4021 |
|
4022 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY = |
|
4023 "!!ARBfp1.0\n" |
|
4024 "PARAM c[9] = { program.local[0..7],\n" |
|
4025 " { 1 } };\n" |
|
4026 "TEMP R0;\n" |
|
4027 "TEMP R1;\n" |
|
4028 "TEMP R2;\n" |
|
4029 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4030 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4031 "ADD R0.xyz, R0, c[3];\n" |
|
4032 "RCP R0.z, R0.z;\n" |
|
4033 "MUL R0.xy, R0, R0.z;\n" |
|
4034 "MUL R0.zw, R0.xyxy, c[0].xyxy;\n" |
|
4035 "ADD R1.x, R0.z, R0.w;\n" |
|
4036 "MUL R0.xy, fragment.position, c[5];\n" |
|
4037 "TEX R0, R0, texture[0], 2D;\n" |
|
4038 "MUL R1.x, R1, c[0].z;\n" |
|
4039 "TEX R1, R1, texture[2], 1D;\n" |
|
4040 "ADD R2.x, -R0.w, c[8];\n" |
|
4041 "MUL R2.xyz, R1, R2.x;\n" |
|
4042 "MAD R1.xyz, R1, R0, R2;\n" |
|
4043 "ADD R2.x, -R1.w, c[8];\n" |
|
4044 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
4045 "ADD R1.z, R1.w, R0.w;\n" |
|
4046 "MAD R2.w, -R1, R0, R1.z;\n" |
|
4047 "ADD R1.xy, fragment.position, c[6];\n" |
|
4048 "MUL R1.xy, R1, c[4];\n" |
|
4049 "TEX R1, R1, texture[1], 2D;\n" |
|
4050 "ADD R2, R2, -R0;\n" |
|
4051 "DP4 R1.x, R1, c[7];\n" |
|
4052 "MAD result.color, R1.x, R2, R0;\n" |
|
4053 "END\n" |
|
4054 ; |
|
4055 |
|
4056 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN = |
|
4057 "!!ARBfp1.0\n" |
|
4058 "PARAM c[8] = { program.local[0..7] };\n" |
|
4059 "TEMP R0;\n" |
|
4060 "TEMP R1;\n" |
|
4061 "TEMP R2;\n" |
|
4062 "TEMP R3;\n" |
|
4063 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4064 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4065 "ADD R0.xyz, R0, c[3];\n" |
|
4066 "RCP R0.z, R0.z;\n" |
|
4067 "MUL R0.xy, R0, R0.z;\n" |
|
4068 "MUL R0.xy, R0, c[0];\n" |
|
4069 "ADD R0.x, R0, R0.y;\n" |
|
4070 "MUL R0.z, R0.x, c[0];\n" |
|
4071 "ADD R3.xy, fragment.position, c[6];\n" |
|
4072 "TEX R1, R0.z, texture[2], 1D;\n" |
|
4073 "MUL R0.xy, fragment.position, c[5];\n" |
|
4074 "TEX R0, R0, texture[0], 2D;\n" |
|
4075 "ADD R2, R1, R0;\n" |
|
4076 "MAD R2, -R1, R0, R2;\n" |
|
4077 "MUL R3.xy, R3, c[4];\n" |
|
4078 "TEX R1, R3, texture[1], 2D;\n" |
|
4079 "ADD R2, R2, -R0;\n" |
|
4080 "DP4 R1.x, R1, c[7];\n" |
|
4081 "MAD result.color, R1.x, R2, R0;\n" |
|
4082 "END\n" |
|
4083 ; |
|
4084 |
|
4085 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY = |
|
4086 "!!ARBfp1.0\n" |
|
4087 "PARAM c[9] = { program.local[0..7],\n" |
|
4088 " { 2, 1 } };\n" |
|
4089 "TEMP R0;\n" |
|
4090 "TEMP R1;\n" |
|
4091 "TEMP R2;\n" |
|
4092 "TEMP R3;\n" |
|
4093 "TEMP R4;\n" |
|
4094 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4095 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4096 "ADD R0.xyz, R0, c[3];\n" |
|
4097 "RCP R0.z, R0.z;\n" |
|
4098 "MUL R0.xy, R0, R0.z;\n" |
|
4099 "MUL R0.xy, R0, c[0];\n" |
|
4100 "ADD R0.x, R0, R0.y;\n" |
|
4101 "MUL R0.x, R0, c[0].z;\n" |
|
4102 "TEX R0, R0, texture[2], 1D;\n" |
|
4103 "MUL R1.xy, fragment.position, c[5];\n" |
|
4104 "TEX R1, R1, texture[0], 2D;\n" |
|
4105 "ADD R2.w, -R1, c[8].y;\n" |
|
4106 "ADD R3.xyz, R0.w, -R0;\n" |
|
4107 "ADD R2.xyz, R1.w, -R1;\n" |
|
4108 "MUL R2.xyz, R2, R3;\n" |
|
4109 "MUL R2.xyz, R2, c[8].x;\n" |
|
4110 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
4111 "MUL R4.xyz, R0, R2.w;\n" |
|
4112 "MUL R3.xyz, R0, R1;\n" |
|
4113 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
4114 "ADD R2.x, -R0.w, c[8].y;\n" |
|
4115 "MAD R3.xyz, R3, c[8].x, R4;\n" |
|
4116 "MAD R3.xyz, R1, R2.x, R3;\n" |
|
4117 "MAD R0.xyz, R1, R2.x, R0;\n" |
|
4118 "MUL R2.xyz, R1, c[8].x;\n" |
|
4119 "ADD R0.xyz, R0, -R3;\n" |
|
4120 "SGE R2.xyz, R2, R1.w;\n" |
|
4121 "MAD R2.xyz, R2, R0, R3;\n" |
|
4122 "ADD R0.z, R0.w, R1.w;\n" |
|
4123 "MAD R2.w, -R0, R1, R0.z;\n" |
|
4124 "ADD R0.xy, fragment.position, c[6];\n" |
|
4125 "MUL R0.xy, R0, c[4];\n" |
|
4126 "TEX R0, R0, texture[1], 2D;\n" |
|
4127 "ADD R2, R2, -R1;\n" |
|
4128 "DP4 R0.x, R0, c[7];\n" |
|
4129 "MAD result.color, R0.x, R2, R1;\n" |
|
4130 "END\n" |
|
4131 ; |
|
4132 |
|
4133 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN = |
|
4134 "!!ARBfp1.0\n" |
|
4135 "PARAM c[9] = { program.local[0..7],\n" |
|
4136 " { 1 } };\n" |
|
4137 "TEMP R0;\n" |
|
4138 "TEMP R1;\n" |
|
4139 "TEMP R2;\n" |
|
4140 "TEMP R3;\n" |
|
4141 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4142 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4143 "ADD R0.xyz, R0, c[3];\n" |
|
4144 "RCP R0.z, R0.z;\n" |
|
4145 "MUL R0.xy, R0, R0.z;\n" |
|
4146 "MUL R0.xy, R0, c[0];\n" |
|
4147 "ADD R0.z, R0.x, R0.y;\n" |
|
4148 "MUL R1.x, R0.z, c[0].z;\n" |
|
4149 "MUL R0.xy, fragment.position, c[5];\n" |
|
4150 "TEX R0, R0, texture[0], 2D;\n" |
|
4151 "TEX R1, R1, texture[2], 1D;\n" |
|
4152 "MUL R3.xyz, R1.w, R0;\n" |
|
4153 "MUL R2.xyz, R1, R0.w;\n" |
|
4154 "MIN R2.xyz, R2, R3;\n" |
|
4155 "ADD R2.w, -R0, c[8].x;\n" |
|
4156 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
4157 "ADD R2.x, -R1.w, c[8];\n" |
|
4158 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
4159 "ADD R1.z, R1.w, R0.w;\n" |
|
4160 "MAD R2.w, -R1, R0, R1.z;\n" |
|
4161 "ADD R1.xy, fragment.position, c[6];\n" |
|
4162 "MUL R1.xy, R1, c[4];\n" |
|
4163 "TEX R1, R1, texture[1], 2D;\n" |
|
4164 "ADD R2, R2, -R0;\n" |
|
4165 "DP4 R1.x, R1, c[7];\n" |
|
4166 "MAD result.color, R1.x, R2, R0;\n" |
|
4167 "END\n" |
|
4168 ; |
|
4169 |
|
4170 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN = |
|
4171 "!!ARBfp1.0\n" |
|
4172 "PARAM c[9] = { program.local[0..7],\n" |
|
4173 " { 1 } };\n" |
|
4174 "TEMP R0;\n" |
|
4175 "TEMP R1;\n" |
|
4176 "TEMP R2;\n" |
|
4177 "TEMP R3;\n" |
|
4178 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4179 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4180 "ADD R0.xyz, R0, c[3];\n" |
|
4181 "RCP R0.z, R0.z;\n" |
|
4182 "MUL R0.xy, R0, R0.z;\n" |
|
4183 "MUL R0.xy, R0, c[0];\n" |
|
4184 "ADD R0.z, R0.x, R0.y;\n" |
|
4185 "MUL R1.x, R0.z, c[0].z;\n" |
|
4186 "MUL R0.xy, fragment.position, c[5];\n" |
|
4187 "TEX R0, R0, texture[0], 2D;\n" |
|
4188 "TEX R1, R1, texture[2], 1D;\n" |
|
4189 "MUL R3.xyz, R1.w, R0;\n" |
|
4190 "MUL R2.xyz, R1, R0.w;\n" |
|
4191 "MAX R2.xyz, R2, R3;\n" |
|
4192 "ADD R2.w, -R0, c[8].x;\n" |
|
4193 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
4194 "ADD R2.x, -R1.w, c[8];\n" |
|
4195 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
4196 "ADD R1.z, R1.w, R0.w;\n" |
|
4197 "MAD R2.w, -R1, R0, R1.z;\n" |
|
4198 "ADD R1.xy, fragment.position, c[6];\n" |
|
4199 "MUL R1.xy, R1, c[4];\n" |
|
4200 "TEX R1, R1, texture[1], 2D;\n" |
|
4201 "ADD R2, R2, -R0;\n" |
|
4202 "DP4 R1.x, R1, c[7];\n" |
|
4203 "MAD result.color, R1.x, R2, R0;\n" |
|
4204 "END\n" |
|
4205 ; |
|
4206 |
|
4207 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE = |
|
4208 "!!ARBfp1.0\n" |
|
4209 "PARAM c[9] = { program.local[0..7],\n" |
|
4210 " { 1, 1e-006 } };\n" |
|
4211 "TEMP R0;\n" |
|
4212 "TEMP R1;\n" |
|
4213 "TEMP R2;\n" |
|
4214 "TEMP R3;\n" |
|
4215 "TEMP R4;\n" |
|
4216 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4217 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4218 "ADD R0.xyz, R0, c[3];\n" |
|
4219 "RCP R0.z, R0.z;\n" |
|
4220 "MUL R0.xy, R0, R0.z;\n" |
|
4221 "MUL R0.xy, R0, c[0];\n" |
|
4222 "ADD R0.x, R0, R0.y;\n" |
|
4223 "MUL R0.x, R0, c[0].z;\n" |
|
4224 "TEX R0, R0, texture[2], 1D;\n" |
|
4225 "MAX R1.x, R0.w, c[8].y;\n" |
|
4226 "RCP R1.x, R1.x;\n" |
|
4227 "MAD R2.xyz, -R0, R1.x, c[8].x;\n" |
|
4228 "MAX R2.xyz, R2, c[8].y;\n" |
|
4229 "MUL R1.xy, fragment.position, c[5];\n" |
|
4230 "TEX R1, R1, texture[0], 2D;\n" |
|
4231 "ADD R2.w, -R0, c[8].x;\n" |
|
4232 "MUL R3.xyz, R1, R2.w;\n" |
|
4233 "ADD R2.w, -R1, c[8].x;\n" |
|
4234 "MAD R4.xyz, R0, R2.w, R3;\n" |
|
4235 "MUL R3.xyz, R0.w, R1;\n" |
|
4236 "MUL R2.w, R0, R1;\n" |
|
4237 "MAD R0.xyz, R0, R1.w, R3;\n" |
|
4238 "SGE R0.xyz, R0, R2.w;\n" |
|
4239 "RCP R2.x, R2.x;\n" |
|
4240 "RCP R2.y, R2.y;\n" |
|
4241 "RCP R2.z, R2.z;\n" |
|
4242 "MAD R2.xyz, R3, R2, R4;\n" |
|
4243 "MAD R4.xyz, R0.w, R1.w, R4;\n" |
|
4244 "ADD R4.xyz, R4, -R2;\n" |
|
4245 "MAD R2.xyz, R0, R4, R2;\n" |
|
4246 "ADD R0.z, R0.w, R1.w;\n" |
|
4247 "MAD R2.w, -R0, R1, R0.z;\n" |
|
4248 "ADD R0.xy, fragment.position, c[6];\n" |
|
4249 "MUL R0.xy, R0, c[4];\n" |
|
4250 "TEX R0, R0, texture[1], 2D;\n" |
|
4251 "ADD R2, R2, -R1;\n" |
|
4252 "DP4 R0.x, R0, c[7];\n" |
|
4253 "MAD result.color, R0.x, R2, R1;\n" |
|
4254 "END\n" |
|
4255 ; |
|
4256 |
|
4257 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN = |
|
4258 "!!ARBfp1.0\n" |
|
4259 "PARAM c[9] = { program.local[0..7],\n" |
|
4260 " { 1, 9.9999997e-006 } };\n" |
|
4261 "TEMP R0;\n" |
|
4262 "TEMP R1;\n" |
|
4263 "TEMP R2;\n" |
|
4264 "TEMP R3;\n" |
|
4265 "TEMP R4;\n" |
|
4266 "TEMP R5;\n" |
|
4267 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4268 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4269 "ADD R0.xyz, R0, c[3];\n" |
|
4270 "RCP R0.z, R0.z;\n" |
|
4271 "MUL R0.xy, R0, R0.z;\n" |
|
4272 "MUL R0.xy, R0, c[0];\n" |
|
4273 "ADD R0.x, R0, R0.y;\n" |
|
4274 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
4275 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
4276 "MUL R0.x, R0, c[0].z;\n" |
|
4277 "TEX R0, R0, texture[2], 1D;\n" |
|
4278 "MUL R2.xyz, R0.w, R1;\n" |
|
4279 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
4280 "MAD R2.xyz, -R0.w, R1.w, R3;\n" |
|
4281 "MUL R4.xyz, R0.w, R2;\n" |
|
4282 "MAX R2.xyz, R0, c[8].y;\n" |
|
4283 "ADD R2.w, -R1, c[8].x;\n" |
|
4284 "MUL R5.xyz, R0, R2.w;\n" |
|
4285 "ADD R3.w, -R0, c[8].x;\n" |
|
4286 "RCP R2.x, R2.x;\n" |
|
4287 "RCP R2.y, R2.y;\n" |
|
4288 "RCP R2.z, R2.z;\n" |
|
4289 "MAD R2.xyz, R4, R2, R5;\n" |
|
4290 "MUL R4.xyz, R1, R3.w;\n" |
|
4291 "MAD R0.xyz, R0, R2.w, R4;\n" |
|
4292 "MUL R2.w, R0, R1;\n" |
|
4293 "MAD R2.xyz, R1, R3.w, R2;\n" |
|
4294 "ADD R2.xyz, R2, -R0;\n" |
|
4295 "SGE R3.xyz, R3, R2.w;\n" |
|
4296 "MAD R2.xyz, R3, R2, R0;\n" |
|
4297 "ADD R0.z, R0.w, R1.w;\n" |
|
4298 "MAD R2.w, -R0, R1, R0.z;\n" |
|
4299 "ADD R0.xy, fragment.position, c[6];\n" |
|
4300 "MUL R0.xy, R0, c[4];\n" |
|
4301 "TEX R0, R0, texture[1], 2D;\n" |
|
4302 "ADD R2, R2, -R1;\n" |
|
4303 "DP4 R0.x, R0, c[7];\n" |
|
4304 "MAD result.color, R0.x, R2, R1;\n" |
|
4305 "END\n" |
|
4306 ; |
|
4307 |
|
4308 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT = |
|
4309 "!!ARBfp1.0\n" |
|
4310 "PARAM c[9] = { program.local[0..7],\n" |
|
4311 " { 2, 1 } };\n" |
|
4312 "TEMP R0;\n" |
|
4313 "TEMP R1;\n" |
|
4314 "TEMP R2;\n" |
|
4315 "TEMP R3;\n" |
|
4316 "TEMP R4;\n" |
|
4317 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4318 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4319 "ADD R0.xyz, R0, c[3];\n" |
|
4320 "RCP R0.z, R0.z;\n" |
|
4321 "MUL R0.xy, R0, R0.z;\n" |
|
4322 "MUL R0.xy, R0, c[0];\n" |
|
4323 "ADD R0.x, R0, R0.y;\n" |
|
4324 "MUL R0.x, R0, c[0].z;\n" |
|
4325 "TEX R0, R0, texture[2], 1D;\n" |
|
4326 "MUL R1.xy, fragment.position, c[5];\n" |
|
4327 "TEX R1, R1, texture[0], 2D;\n" |
|
4328 "ADD R2.w, -R1, c[8].y;\n" |
|
4329 "ADD R3.xyz, R0.w, -R0;\n" |
|
4330 "ADD R2.xyz, R1.w, -R1;\n" |
|
4331 "MUL R2.xyz, R2, R3;\n" |
|
4332 "MUL R2.xyz, R2, c[8].x;\n" |
|
4333 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
4334 "MUL R4.xyz, R0, R2.w;\n" |
|
4335 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
4336 "MUL R3.xyz, R0, R1;\n" |
|
4337 "ADD R2.w, -R0, c[8].y;\n" |
|
4338 "MAD R3.xyz, R3, c[8].x, R4;\n" |
|
4339 "MUL R0.xyz, R0, c[8].x;\n" |
|
4340 "SGE R0.xyz, R0, R0.w;\n" |
|
4341 "MAD R3.xyz, R1, R2.w, R3;\n" |
|
4342 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
4343 "ADD R2.xyz, R2, -R3;\n" |
|
4344 "MAD R2.xyz, R0, R2, R3;\n" |
|
4345 "ADD R0.z, R0.w, R1.w;\n" |
|
4346 "MAD R2.w, -R0, R1, R0.z;\n" |
|
4347 "ADD R0.xy, fragment.position, c[6];\n" |
|
4348 "MUL R0.xy, R0, c[4];\n" |
|
4349 "TEX R0, R0, texture[1], 2D;\n" |
|
4350 "ADD R2, R2, -R1;\n" |
|
4351 "DP4 R0.x, R0, c[7];\n" |
|
4352 "MAD result.color, R0.x, R2, R1;\n" |
|
4353 "END\n" |
|
4354 ; |
|
4355 |
|
4356 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT = |
|
4357 "!!ARBfp1.0\n" |
|
4358 "PARAM c[10] = { program.local[0..7],\n" |
|
4359 " { 1, 2, 9.9999997e-006, 8 },\n" |
|
4360 " { 3 } };\n" |
|
4361 "TEMP R0;\n" |
|
4362 "TEMP R1;\n" |
|
4363 "TEMP R2;\n" |
|
4364 "TEMP R3;\n" |
|
4365 "TEMP R4;\n" |
|
4366 "TEMP R5;\n" |
|
4367 "TEMP R6;\n" |
|
4368 "MUL R0.xy, fragment.position, c[5];\n" |
|
4369 "TEX R1, R0, texture[0], 2D;\n" |
|
4370 "MAX R0.w, R1, c[8].z;\n" |
|
4371 "RCP R2.w, R0.w;\n" |
|
4372 "MUL R2.xyz, R1, R2.w;\n" |
|
4373 "RSQ R0.w, R2.x;\n" |
|
4374 "MUL R5.xyz, -R2, c[8].w;\n" |
|
4375 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4376 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4377 "ADD R0.xyz, R0, c[3];\n" |
|
4378 "RCP R0.z, R0.z;\n" |
|
4379 "MUL R0.xy, R0, R0.z;\n" |
|
4380 "MUL R0.xy, R0, c[0];\n" |
|
4381 "ADD R0.x, R0, R0.y;\n" |
|
4382 "RSQ R0.z, R2.y;\n" |
|
4383 "RSQ R0.y, R2.z;\n" |
|
4384 "MAD R2.xyz, -R1, R2.w, c[8].x;\n" |
|
4385 "RCP R3.x, R0.w;\n" |
|
4386 "RCP R3.y, R0.z;\n" |
|
4387 "RCP R3.z, R0.y;\n" |
|
4388 "MUL R0.x, R0, c[0].z;\n" |
|
4389 "TEX R0, R0, texture[2], 1D;\n" |
|
4390 "MAD R4.xyz, R1.w, R3, -R1;\n" |
|
4391 "MAD R3.xyz, R0, c[8].y, -R0.w;\n" |
|
4392 "MUL R4.xyz, R3, R4;\n" |
|
4393 "ADD R6.xyz, R5, c[9].x;\n" |
|
4394 "MUL R5.xyz, R2, R3;\n" |
|
4395 "MAD R2.xyz, -R2, R3, R0.w;\n" |
|
4396 "MUL R3.xyz, R0, c[8].y;\n" |
|
4397 "MAD R6.xyz, -R5, R6, R0.w;\n" |
|
4398 "MAD R4.xyz, R0.w, R1, R4;\n" |
|
4399 "MAD R5.xyz, -R1, R6, R4;\n" |
|
4400 "MUL R4.xyz, R1, c[8].w;\n" |
|
4401 "SGE R3.xyz, R3, R0.w;\n" |
|
4402 "ADD R2.w, -R1, c[8].x;\n" |
|
4403 "MUL R6.xyz, R1, R6;\n" |
|
4404 "SGE R4.xyz, R4, R1.w;\n" |
|
4405 "MAD R4.xyz, R4, R5, R6;\n" |
|
4406 "MAD R4.xyz, -R1, R2, R4;\n" |
|
4407 "MUL R2.xyz, R1, R2;\n" |
|
4408 "MAD R2.xyz, R3, R4, R2;\n" |
|
4409 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
4410 "ADD R0.x, -R0.w, c[8];\n" |
|
4411 "MAD R2.xyz, R1, R0.x, R2;\n" |
|
4412 "ADD R0.z, R0.w, R1.w;\n" |
|
4413 "MAD R2.w, -R0, R1, R0.z;\n" |
|
4414 "ADD R0.xy, fragment.position, c[6];\n" |
|
4415 "MUL R0.xy, R0, c[4];\n" |
|
4416 "TEX R0, R0, texture[1], 2D;\n" |
|
4417 "ADD R2, R2, -R1;\n" |
|
4418 "DP4 R0.x, R0, c[7];\n" |
|
4419 "MAD result.color, R0.x, R2, R1;\n" |
|
4420 "END\n" |
|
4421 ; |
|
4422 |
|
4423 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE = |
|
4424 "!!ARBfp1.0\n" |
|
4425 "PARAM c[9] = { program.local[0..7],\n" |
|
4426 " { 2 } };\n" |
|
4427 "TEMP R0;\n" |
|
4428 "TEMP R1;\n" |
|
4429 "TEMP R2;\n" |
|
4430 "TEMP R3;\n" |
|
4431 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4432 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4433 "ADD R0.xyz, R0, c[3];\n" |
|
4434 "RCP R0.z, R0.z;\n" |
|
4435 "MUL R0.xy, R0, R0.z;\n" |
|
4436 "MUL R0.xy, R0, c[0];\n" |
|
4437 "ADD R0.z, R0.x, R0.y;\n" |
|
4438 "MUL R1.x, R0.z, c[0].z;\n" |
|
4439 "MUL R0.xy, fragment.position, c[5];\n" |
|
4440 "TEX R0, R0, texture[0], 2D;\n" |
|
4441 "TEX R1, R1, texture[2], 1D;\n" |
|
4442 "ADD R2.xyz, R1, R0;\n" |
|
4443 "MUL R3.xyz, R1.w, R0;\n" |
|
4444 "MUL R1.xyz, R1, R0.w;\n" |
|
4445 "MIN R1.xyz, R1, R3;\n" |
|
4446 "MAD R2.xyz, -R1, c[8].x, R2;\n" |
|
4447 "ADD R1.z, R1.w, R0.w;\n" |
|
4448 "MAD R2.w, -R1, R0, R1.z;\n" |
|
4449 "ADD R1.xy, fragment.position, c[6];\n" |
|
4450 "MUL R1.xy, R1, c[4];\n" |
|
4451 "TEX R1, R1, texture[1], 2D;\n" |
|
4452 "ADD R2, R2, -R0;\n" |
|
4453 "DP4 R1.x, R1, c[7];\n" |
|
4454 "MAD result.color, R1.x, R2, R0;\n" |
|
4455 "END\n" |
|
4456 ; |
|
4457 |
|
4458 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION = |
|
4459 "!!ARBfp1.0\n" |
|
4460 "PARAM c[9] = { program.local[0..7],\n" |
|
4461 " { 2, 1 } };\n" |
|
4462 "TEMP R0;\n" |
|
4463 "TEMP R1;\n" |
|
4464 "TEMP R2;\n" |
|
4465 "TEMP R3;\n" |
|
4466 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4467 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4468 "ADD R0.xyz, R0, c[3];\n" |
|
4469 "RCP R0.z, R0.z;\n" |
|
4470 "MUL R0.xy, R0, R0.z;\n" |
|
4471 "MUL R0.xy, R0, c[0];\n" |
|
4472 "ADD R0.z, R0.x, R0.y;\n" |
|
4473 "MUL R1.x, R0.z, c[0].z;\n" |
|
4474 "MUL R0.xy, fragment.position, c[5];\n" |
|
4475 "TEX R0, R0, texture[0], 2D;\n" |
|
4476 "TEX R1, R1, texture[2], 1D;\n" |
|
4477 "MUL R2.xyz, R1.w, R0;\n" |
|
4478 "MAD R3.xyz, R1, R0.w, R2;\n" |
|
4479 "MUL R2.xyz, R1, R0;\n" |
|
4480 "MAD R2.xyz, -R2, c[8].x, R3;\n" |
|
4481 "ADD R2.w, -R0, c[8].y;\n" |
|
4482 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
4483 "ADD R2.x, -R1.w, c[8].y;\n" |
|
4484 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
4485 "ADD R1.z, R1.w, R0.w;\n" |
|
4486 "MAD R2.w, -R1, R0, R1.z;\n" |
|
4487 "ADD R1.xy, fragment.position, c[6];\n" |
|
4488 "MUL R1.xy, R1, c[4];\n" |
|
4489 "TEX R1, R1, texture[1], 2D;\n" |
|
4490 "ADD R2, R2, -R0;\n" |
|
4491 "DP4 R1.x, R1, c[7];\n" |
|
4492 "MAD result.color, R1.x, R2, R0;\n" |
|
4493 "END\n" |
|
4494 ; |
|
4495 |
|
4496 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = |
|
4497 "!!ARBfp1.0\n" |
|
4498 "PARAM c[8] = { program.local[0..6],\n" |
|
4499 " { 1 } };\n" |
|
4500 "TEMP R0;\n" |
|
4501 "TEMP R1;\n" |
|
4502 "TEMP R2;\n" |
|
4503 "TEMP R3;\n" |
|
4504 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4505 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4506 "ADD R0.xyz, R0, c[3];\n" |
|
4507 "RCP R0.z, R0.z;\n" |
|
4508 "MUL R0.xy, R0, R0.z;\n" |
|
4509 "MUL R0.xy, R0, c[0];\n" |
|
4510 "ADD R0.x, R0, R0.y;\n" |
|
4511 "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n" |
|
4512 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
4513 "MUL R2.xyz, R1, c[4].y;\n" |
|
4514 "MUL R0.x, R0, c[0].z;\n" |
|
4515 "TEX R0, R0, texture[1], 1D;\n" |
|
4516 "MUL R3.xyz, R0.w, R2;\n" |
|
4517 "MUL R2.xyz, R0, c[4].x;\n" |
|
4518 "MAD R2.xyz, R1.w, R2, R3;\n" |
|
4519 "ADD R2.w, -R1, c[7].x;\n" |
|
4520 "MUL R0.xyz, R0, c[5].y;\n" |
|
4521 "MAD R0.xyz, R2.w, R0, R2;\n" |
|
4522 "ADD R2.x, -R0.w, c[7];\n" |
|
4523 "MUL R1.xyz, R1, c[5].z;\n" |
|
4524 "MAD result.color.xyz, R2.x, R1, R0;\n" |
|
4525 "MUL R0.x, R0.w, R1.w;\n" |
|
4526 "MUL R0.z, R1.w, R2.x;\n" |
|
4527 "MUL R0.y, R0.w, R2.w;\n" |
|
4528 "DP3 result.color.w, R0, c[5];\n" |
|
4529 "END\n" |
|
4530 ; |
|
4531 |
|
4532 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY_NOMASK = |
|
4533 "!!ARBfp1.0\n" |
|
4534 "PARAM c[6] = { program.local[0..4],\n" |
|
4535 " { 1 } };\n" |
|
4536 "TEMP R0;\n" |
|
4537 "TEMP R1;\n" |
|
4538 "TEMP R2;\n" |
|
4539 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4540 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4541 "ADD R0.xyz, R0, c[3];\n" |
|
4542 "RCP R0.z, R0.z;\n" |
|
4543 "MUL R0.xy, R0, R0.z;\n" |
|
4544 "MUL R0.xy, R0, c[0];\n" |
|
4545 "ADD R0.x, R0, R0.y;\n" |
|
4546 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
4547 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
4548 "MUL R0.x, R0, c[0].z;\n" |
|
4549 "TEX R0, R0, texture[1], 1D;\n" |
|
4550 "ADD R2.x, -R1.w, c[5];\n" |
|
4551 "MUL R2.xyz, R0, R2.x;\n" |
|
4552 "MAD R0.xyz, R0, R1, R2;\n" |
|
4553 "ADD R2.x, R0.w, R1.w;\n" |
|
4554 "ADD R2.y, -R0.w, c[5].x;\n" |
|
4555 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
4556 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
4557 "END\n" |
|
4558 ; |
|
4559 |
|
4560 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN_NOMASK = |
|
4561 "!!ARBfp1.0\n" |
|
4562 "PARAM c[5] = { program.local[0..4] };\n" |
|
4563 "TEMP R0;\n" |
|
4564 "TEMP R1;\n" |
|
4565 "TEMP R2;\n" |
|
4566 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4567 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4568 "ADD R0.xyz, R0, c[3];\n" |
|
4569 "RCP R0.z, R0.z;\n" |
|
4570 "MUL R0.xy, R0, R0.z;\n" |
|
4571 "MUL R0.xy, R0, c[0];\n" |
|
4572 "ADD R0.x, R0, R0.y;\n" |
|
4573 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
4574 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
4575 "MUL R0.x, R0, c[0].z;\n" |
|
4576 "TEX R0, R0, texture[1], 1D;\n" |
|
4577 "ADD R2, R0, R1;\n" |
|
4578 "MAD result.color, -R0, R1, R2;\n" |
|
4579 "END\n" |
|
4580 ; |
|
4581 |
|
4582 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY_NOMASK = |
|
4583 "!!ARBfp1.0\n" |
|
4584 "PARAM c[6] = { program.local[0..4],\n" |
|
4585 " { 2, 1 } };\n" |
|
4586 "TEMP R0;\n" |
|
4587 "TEMP R1;\n" |
|
4588 "TEMP R2;\n" |
|
4589 "TEMP R3;\n" |
|
4590 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4591 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4592 "ADD R0.xyz, R0, c[3];\n" |
|
4593 "RCP R0.z, R0.z;\n" |
|
4594 "MUL R0.xy, R0, R0.z;\n" |
|
4595 "MUL R0.xy, R0, c[0];\n" |
|
4596 "ADD R0.x, R0, R0.y;\n" |
|
4597 "MUL R0.x, R0, c[0].z;\n" |
|
4598 "TEX R0, R0, texture[1], 1D;\n" |
|
4599 "MUL R1.xy, fragment.position, c[4];\n" |
|
4600 "TEX R1, R1, texture[0], 2D;\n" |
|
4601 "ADD R3.xyz, R0.w, -R0;\n" |
|
4602 "ADD R2.xyz, R1.w, -R1;\n" |
|
4603 "MUL R2.xyz, R2, R3;\n" |
|
4604 "ADD R2.w, -R1, c[5].y;\n" |
|
4605 "MUL R2.xyz, R2, c[5].x;\n" |
|
4606 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
4607 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
4608 "MUL R3.xyz, R0, R2.w;\n" |
|
4609 "MUL R0.xyz, R0, R1;\n" |
|
4610 "ADD R2.w, -R0, c[5].y;\n" |
|
4611 "MAD R0.xyz, R0, c[5].x, R3;\n" |
|
4612 "MAD R0.xyz, R1, R2.w, R0;\n" |
|
4613 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
4614 "MUL R1.xyz, R1, c[5].x;\n" |
|
4615 "ADD R2.w, R0, R1;\n" |
|
4616 "ADD R2.xyz, R2, -R0;\n" |
|
4617 "SGE R1.xyz, R1, R1.w;\n" |
|
4618 "MAD result.color.xyz, R1, R2, R0;\n" |
|
4619 "MAD result.color.w, -R0, R1, R2;\n" |
|
4620 "END\n" |
|
4621 ; |
|
4622 |
|
4623 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN_NOMASK = |
|
4624 "!!ARBfp1.0\n" |
|
4625 "PARAM c[6] = { program.local[0..4],\n" |
|
4626 " { 1 } };\n" |
|
4627 "TEMP R0;\n" |
|
4628 "TEMP R1;\n" |
|
4629 "TEMP R2;\n" |
|
4630 "TEMP R3;\n" |
|
4631 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4632 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4633 "ADD R0.xyz, R0, c[3];\n" |
|
4634 "RCP R0.z, R0.z;\n" |
|
4635 "MUL R0.xy, R0, R0.z;\n" |
|
4636 "MUL R0.xy, R0, c[0];\n" |
|
4637 "ADD R0.x, R0, R0.y;\n" |
|
4638 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
4639 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
4640 "MUL R0.x, R0, c[0].z;\n" |
|
4641 "TEX R0, R0, texture[1], 1D;\n" |
|
4642 "MUL R2.xyz, R0, R1.w;\n" |
|
4643 "MUL R3.xyz, R0.w, R1;\n" |
|
4644 "MIN R2.xyz, R2, R3;\n" |
|
4645 "ADD R2.w, -R1, c[5].x;\n" |
|
4646 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
4647 "ADD R2.x, R0.w, R1.w;\n" |
|
4648 "ADD R2.y, -R0.w, c[5].x;\n" |
|
4649 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
4650 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
4651 "END\n" |
|
4652 ; |
|
4653 |
|
4654 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN_NOMASK = |
|
4655 "!!ARBfp1.0\n" |
|
4656 "PARAM c[6] = { program.local[0..4],\n" |
|
4657 " { 1 } };\n" |
|
4658 "TEMP R0;\n" |
|
4659 "TEMP R1;\n" |
|
4660 "TEMP R2;\n" |
|
4661 "TEMP R3;\n" |
|
4662 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4663 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4664 "ADD R0.xyz, R0, c[3];\n" |
|
4665 "RCP R0.z, R0.z;\n" |
|
4666 "MUL R0.xy, R0, R0.z;\n" |
|
4667 "MUL R0.xy, R0, c[0];\n" |
|
4668 "ADD R0.x, R0, R0.y;\n" |
|
4669 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
4670 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
4671 "MUL R0.x, R0, c[0].z;\n" |
|
4672 "TEX R0, R0, texture[1], 1D;\n" |
|
4673 "MUL R2.xyz, R0, R1.w;\n" |
|
4674 "MUL R3.xyz, R0.w, R1;\n" |
|
4675 "MAX R2.xyz, R2, R3;\n" |
|
4676 "ADD R2.w, -R1, c[5].x;\n" |
|
4677 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
4678 "ADD R2.x, R0.w, R1.w;\n" |
|
4679 "ADD R2.y, -R0.w, c[5].x;\n" |
|
4680 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
4681 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
4682 "END\n" |
|
4683 ; |
|
4684 |
|
4685 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE_NOMASK = |
|
4686 "!!ARBfp1.0\n" |
|
4687 "PARAM c[6] = { program.local[0..4],\n" |
|
4688 " { 1, 1e-006 } };\n" |
|
4689 "TEMP R0;\n" |
|
4690 "TEMP R1;\n" |
|
4691 "TEMP R2;\n" |
|
4692 "TEMP R3;\n" |
|
4693 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4694 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4695 "ADD R0.xyz, R0, c[3];\n" |
|
4696 "RCP R0.z, R0.z;\n" |
|
4697 "MUL R0.xy, R0, R0.z;\n" |
|
4698 "MUL R0.xy, R0, c[0];\n" |
|
4699 "ADD R0.x, R0, R0.y;\n" |
|
4700 "MUL R0.x, R0, c[0].z;\n" |
|
4701 "TEX R0, R0, texture[1], 1D;\n" |
|
4702 "MAX R1.x, R0.w, c[5].y;\n" |
|
4703 "RCP R1.x, R1.x;\n" |
|
4704 "MAD R3.xyz, -R0, R1.x, c[5].x;\n" |
|
4705 "MAX R3.xyz, R3, c[5].y;\n" |
|
4706 "MUL R1.xy, fragment.position, c[4];\n" |
|
4707 "TEX R1, R1, texture[0], 2D;\n" |
|
4708 "ADD R2.x, -R0.w, c[5];\n" |
|
4709 "MUL R2.xyz, R1, R2.x;\n" |
|
4710 "ADD R2.w, -R1, c[5].x;\n" |
|
4711 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
4712 "MUL R1.xyz, R0.w, R1;\n" |
|
4713 "MAD R0.xyz, R0, R1.w, R1;\n" |
|
4714 "MUL R2.w, R0, R1;\n" |
|
4715 "RCP R3.x, R3.x;\n" |
|
4716 "RCP R3.y, R3.y;\n" |
|
4717 "RCP R3.z, R3.z;\n" |
|
4718 "MAD R3.xyz, R1, R3, R2;\n" |
|
4719 "MAD R2.xyz, R0.w, R1.w, R2;\n" |
|
4720 "ADD R1.x, R0.w, R1.w;\n" |
|
4721 "ADD R2.xyz, R2, -R3;\n" |
|
4722 "SGE R0.xyz, R0, R2.w;\n" |
|
4723 "MAD result.color.xyz, R0, R2, R3;\n" |
|
4724 "MAD result.color.w, -R0, R1, R1.x;\n" |
|
4725 "END\n" |
|
4726 ; |
|
4727 |
|
4728 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN_NOMASK = |
|
4729 "!!ARBfp1.0\n" |
|
4730 "PARAM c[6] = { program.local[0..4],\n" |
|
4731 " { 1, 9.9999997e-006 } };\n" |
|
4732 "TEMP R0;\n" |
|
4733 "TEMP R1;\n" |
|
4734 "TEMP R2;\n" |
|
4735 "TEMP R3;\n" |
|
4736 "TEMP R4;\n" |
|
4737 "TEMP R5;\n" |
|
4738 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4739 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4740 "ADD R0.xyz, R0, c[3];\n" |
|
4741 "RCP R0.z, R0.z;\n" |
|
4742 "MUL R0.xy, R0, R0.z;\n" |
|
4743 "MUL R0.xy, R0, c[0];\n" |
|
4744 "ADD R0.x, R0, R0.y;\n" |
|
4745 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
4746 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
4747 "MUL R0.x, R0, c[0].z;\n" |
|
4748 "TEX R0, R0, texture[1], 1D;\n" |
|
4749 "MUL R2.xyz, R0.w, R1;\n" |
|
4750 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
4751 "ADD R2.w, -R1, c[5].x;\n" |
|
4752 "MAD R2.xyz, -R0.w, R1.w, R3;\n" |
|
4753 "MUL R4.xyz, R0.w, R2;\n" |
|
4754 "MAX R2.xyz, R0, c[5].y;\n" |
|
4755 "MUL R5.xyz, R0, R2.w;\n" |
|
4756 "ADD R3.w, -R0, c[5].x;\n" |
|
4757 "RCP R2.x, R2.x;\n" |
|
4758 "RCP R2.y, R2.y;\n" |
|
4759 "RCP R2.z, R2.z;\n" |
|
4760 "MAD R2.xyz, R4, R2, R5;\n" |
|
4761 "MUL R4.xyz, R1, R3.w;\n" |
|
4762 "MAD R1.xyz, R1, R3.w, R2;\n" |
|
4763 "MAD R0.xyz, R0, R2.w, R4;\n" |
|
4764 "MUL R2.x, R0.w, R1.w;\n" |
|
4765 "ADD R2.w, R0, R1;\n" |
|
4766 "ADD R1.xyz, R1, -R0;\n" |
|
4767 "SGE R2.xyz, R3, R2.x;\n" |
|
4768 "MAD result.color.xyz, R2, R1, R0;\n" |
|
4769 "MAD result.color.w, -R0, R1, R2;\n" |
|
4770 "END\n" |
|
4771 ; |
|
4772 |
|
4773 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT_NOMASK = |
|
4774 "!!ARBfp1.0\n" |
|
4775 "PARAM c[6] = { program.local[0..4],\n" |
|
4776 " { 2, 1 } };\n" |
|
4777 "TEMP R0;\n" |
|
4778 "TEMP R1;\n" |
|
4779 "TEMP R2;\n" |
|
4780 "TEMP R3;\n" |
|
4781 "TEMP R4;\n" |
|
4782 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4783 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4784 "ADD R0.xyz, R0, c[3];\n" |
|
4785 "RCP R0.z, R0.z;\n" |
|
4786 "MUL R0.xy, R0, R0.z;\n" |
|
4787 "MUL R0.xy, R0, c[0];\n" |
|
4788 "ADD R0.x, R0, R0.y;\n" |
|
4789 "MUL R0.x, R0, c[0].z;\n" |
|
4790 "TEX R0, R0, texture[1], 1D;\n" |
|
4791 "MUL R1.xy, fragment.position, c[4];\n" |
|
4792 "TEX R1, R1, texture[0], 2D;\n" |
|
4793 "ADD R2.w, -R1, c[5].y;\n" |
|
4794 "ADD R3.xyz, R0.w, -R0;\n" |
|
4795 "ADD R2.xyz, R1.w, -R1;\n" |
|
4796 "MUL R2.xyz, R2, R3;\n" |
|
4797 "MUL R2.xyz, R2, c[5].x;\n" |
|
4798 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
4799 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
4800 "MUL R4.xyz, R0, R2.w;\n" |
|
4801 "MUL R3.xyz, R0, R1;\n" |
|
4802 "MUL R0.xyz, R0, c[5].x;\n" |
|
4803 "ADD R2.w, -R0, c[5].y;\n" |
|
4804 "MAD R3.xyz, R3, c[5].x, R4;\n" |
|
4805 "MAD R3.xyz, R1, R2.w, R3;\n" |
|
4806 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
4807 "ADD R2.x, R0.w, R1.w;\n" |
|
4808 "ADD R1.xyz, R1, -R3;\n" |
|
4809 "SGE R0.xyz, R0, R0.w;\n" |
|
4810 "MAD result.color.xyz, R0, R1, R3;\n" |
|
4811 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
4812 "END\n" |
|
4813 ; |
|
4814 |
|
4815 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT_NOMASK = |
|
4816 "!!ARBfp1.0\n" |
|
4817 "PARAM c[7] = { program.local[0..4],\n" |
|
4818 " { 1, 2, 9.9999997e-006, 8 },\n" |
|
4819 " { 3 } };\n" |
|
4820 "TEMP R0;\n" |
|
4821 "TEMP R1;\n" |
|
4822 "TEMP R2;\n" |
|
4823 "TEMP R3;\n" |
|
4824 "TEMP R4;\n" |
|
4825 "TEMP R5;\n" |
|
4826 "TEMP R6;\n" |
|
4827 "MUL R0.xy, fragment.position, c[4];\n" |
|
4828 "TEX R1, R0, texture[0], 2D;\n" |
|
4829 "MAX R0.w, R1, c[5].z;\n" |
|
4830 "RCP R2.w, R0.w;\n" |
|
4831 "MUL R2.xyz, R1, R2.w;\n" |
|
4832 "RSQ R0.w, R2.x;\n" |
|
4833 "MUL R5.xyz, -R2, c[5].w;\n" |
|
4834 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4835 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4836 "ADD R0.xyz, R0, c[3];\n" |
|
4837 "RCP R0.z, R0.z;\n" |
|
4838 "MUL R0.xy, R0, R0.z;\n" |
|
4839 "MUL R0.xy, R0, c[0];\n" |
|
4840 "ADD R0.x, R0, R0.y;\n" |
|
4841 "RSQ R0.z, R2.y;\n" |
|
4842 "RSQ R0.y, R2.z;\n" |
|
4843 "MAD R2.xyz, -R1, R2.w, c[5].x;\n" |
|
4844 "RCP R3.x, R0.w;\n" |
|
4845 "RCP R3.y, R0.z;\n" |
|
4846 "RCP R3.z, R0.y;\n" |
|
4847 "MUL R0.x, R0, c[0].z;\n" |
|
4848 "TEX R0, R0, texture[1], 1D;\n" |
|
4849 "MAD R4.xyz, R1.w, R3, -R1;\n" |
|
4850 "MAD R3.xyz, R0, c[5].y, -R0.w;\n" |
|
4851 "MUL R4.xyz, R3, R4;\n" |
|
4852 "ADD R6.xyz, R5, c[6].x;\n" |
|
4853 "MUL R5.xyz, R2, R3;\n" |
|
4854 "MAD R2.xyz, -R2, R3, R0.w;\n" |
|
4855 "MUL R3.xyz, R0, c[5].y;\n" |
|
4856 "MAD R6.xyz, -R5, R6, R0.w;\n" |
|
4857 "MAD R4.xyz, R0.w, R1, R4;\n" |
|
4858 "MAD R5.xyz, -R1, R6, R4;\n" |
|
4859 "MUL R4.xyz, R1, c[5].w;\n" |
|
4860 "MUL R6.xyz, R1, R6;\n" |
|
4861 "SGE R4.xyz, R4, R1.w;\n" |
|
4862 "MAD R4.xyz, R4, R5, R6;\n" |
|
4863 "MAD R4.xyz, -R1, R2, R4;\n" |
|
4864 "MUL R2.xyz, R1, R2;\n" |
|
4865 "SGE R3.xyz, R3, R0.w;\n" |
|
4866 "MAD R2.xyz, R3, R4, R2;\n" |
|
4867 "ADD R2.w, -R1, c[5].x;\n" |
|
4868 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
4869 "ADD R0.x, R0.w, R1.w;\n" |
|
4870 "ADD R0.y, -R0.w, c[5].x;\n" |
|
4871 "MAD result.color.xyz, R1, R0.y, R2;\n" |
|
4872 "MAD result.color.w, -R0, R1, R0.x;\n" |
|
4873 "END\n" |
|
4874 ; |
|
4875 |
|
4876 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE_NOMASK = |
|
4877 "!!ARBfp1.0\n" |
|
4878 "PARAM c[6] = { program.local[0..4],\n" |
|
4879 " { 2 } };\n" |
|
4880 "TEMP R0;\n" |
|
4881 "TEMP R1;\n" |
|
4882 "TEMP R2;\n" |
|
4883 "TEMP R3;\n" |
|
4884 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4885 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4886 "ADD R0.xyz, R0, c[3];\n" |
|
4887 "RCP R0.z, R0.z;\n" |
|
4888 "MUL R0.xy, R0, R0.z;\n" |
|
4889 "MUL R0.xy, R0, c[0];\n" |
|
4890 "ADD R0.x, R0, R0.y;\n" |
|
4891 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
4892 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
4893 "MUL R0.x, R0, c[0].z;\n" |
|
4894 "TEX R0, R0, texture[1], 1D;\n" |
|
4895 "MUL R2.xyz, R0, R1.w;\n" |
|
4896 "MUL R3.xyz, R0.w, R1;\n" |
|
4897 "ADD R0.xyz, R0, R1;\n" |
|
4898 "MIN R2.xyz, R2, R3;\n" |
|
4899 "ADD R1.x, R0.w, R1.w;\n" |
|
4900 "MAD result.color.xyz, -R2, c[5].x, R0;\n" |
|
4901 "MAD result.color.w, -R0, R1, R1.x;\n" |
|
4902 "END\n" |
|
4903 ; |
|
4904 |
|
4905 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION_NOMASK = |
|
4906 "!!ARBfp1.0\n" |
|
4907 "PARAM c[6] = { program.local[0..4],\n" |
|
4908 " { 2, 1 } };\n" |
|
4909 "TEMP R0;\n" |
|
4910 "TEMP R1;\n" |
|
4911 "TEMP R2;\n" |
|
4912 "TEMP R3;\n" |
|
4913 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4914 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4915 "ADD R0.xyz, R0, c[3];\n" |
|
4916 "RCP R0.z, R0.z;\n" |
|
4917 "MUL R0.xy, R0, R0.z;\n" |
|
4918 "MUL R0.xy, R0, c[0];\n" |
|
4919 "ADD R0.x, R0, R0.y;\n" |
|
4920 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
4921 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
4922 "MUL R0.x, R0, c[0].z;\n" |
|
4923 "TEX R0, R0, texture[1], 1D;\n" |
|
4924 "MUL R2.xyz, R0.w, R1;\n" |
|
4925 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
4926 "MUL R2.xyz, R0, R1;\n" |
|
4927 "MAD R2.xyz, -R2, c[5].x, R3;\n" |
|
4928 "ADD R2.w, -R1, c[5].y;\n" |
|
4929 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
4930 "ADD R2.x, R0.w, R1.w;\n" |
|
4931 "ADD R2.y, -R0.w, c[5];\n" |
|
4932 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
4933 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
4934 "END\n" |
|
4935 ; |
|
4936 |
|
4937 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_MASK = |
|
4938 "!!ARBfp1.0\n" |
|
4939 "PARAM c[7] = { program.local[0..6] };\n" |
|
4940 "TEMP R0;\n" |
|
4941 "TEMP R1;\n" |
|
4942 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4943 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4944 "ADD R0.xyz, R0, c[3];\n" |
|
4945 "RCP R0.z, R0.z;\n" |
|
4946 "MUL R0.zw, R0.xyxy, R0.z;\n" |
|
4947 "MUL R0.zw, R0, c[0].xyxy;\n" |
|
4948 "ADD R1.x, R0.z, R0.w;\n" |
|
4949 "ADD R0.xy, fragment.position, c[5];\n" |
|
4950 "MUL R0.xy, R0, c[4];\n" |
|
4951 "TEX R0, R0, texture[0], 2D;\n" |
|
4952 "DP4 R1.y, R0, c[6];\n" |
|
4953 "MUL R1.x, R1, c[0].z;\n" |
|
4954 "TEX R0, R1, texture[1], 1D;\n" |
|
4955 "MUL result.color, R0, R1.y;\n" |
|
4956 "END\n" |
|
4957 ; |
|
4958 |
|
4959 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_NOMASK = |
|
4960 "!!ARBfp1.0\n" |
|
4961 "PARAM c[4] = { program.local[0..3] };\n" |
|
4962 "TEMP R0;\n" |
|
4963 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4964 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4965 "ADD R0.xyz, R0, c[3];\n" |
|
4966 "RCP R0.z, R0.z;\n" |
|
4967 "MUL R0.xy, R0, R0.z;\n" |
|
4968 "MUL R0.xy, R0, c[0];\n" |
|
4969 "ADD R0.x, R0, R0.y;\n" |
|
4970 "MUL R0.x, R0, c[0].z;\n" |
|
4971 "TEX result.color, R0, texture[0], 1D;\n" |
|
4972 "END\n" |
|
4973 ; |
|
4974 |
|
4975 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = |
|
4976 "!!ARBfp1.0\n" |
|
4977 "PARAM c[11] = { program.local[0..9],\n" |
|
4978 " { 1 } };\n" |
|
4979 "TEMP R0;\n" |
|
4980 "TEMP R1;\n" |
|
4981 "TEMP R2;\n" |
|
4982 "TEMP R3;\n" |
|
4983 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
4984 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
4985 "ADD R1.xyz, R0, c[3];\n" |
|
4986 "RCP R0.z, R1.z;\n" |
|
4987 "MUL R1.xy, R1, R0.z;\n" |
|
4988 "MUL R0.xy, fragment.position, c[7];\n" |
|
4989 "TEX R0, R0, texture[0], 2D;\n" |
|
4990 "MUL R1.xy, R1, c[0];\n" |
|
4991 "TEX R1, R1, texture[2], 2D;\n" |
|
4992 "MUL R2.xyz, R0, c[4].y;\n" |
|
4993 "MUL R3.xyz, R1.w, R2;\n" |
|
4994 "MUL R2.xyz, R1, c[4].x;\n" |
|
4995 "MAD R2.xyz, R0.w, R2, R3;\n" |
|
4996 "ADD R3.xy, fragment.position, c[8];\n" |
|
4997 "ADD R2.w, -R0, c[10].x;\n" |
|
4998 "MUL R1.xyz, R1, c[5].y;\n" |
|
4999 "MAD R2.xyz, R2.w, R1, R2;\n" |
|
5000 "MUL R1.xyz, R0, c[5].z;\n" |
|
5001 "ADD R3.z, -R1.w, c[10].x;\n" |
|
5002 "MAD R2.xyz, R3.z, R1, R2;\n" |
|
5003 "MUL R1.y, R1.w, R2.w;\n" |
|
5004 "MUL R1.x, R1.w, R0.w;\n" |
|
5005 "MUL R1.z, R0.w, R3;\n" |
|
5006 "DP3 R2.w, R1, c[5];\n" |
|
5007 "MUL R3.xy, R3, c[6];\n" |
|
5008 "TEX R1, R3, texture[1], 2D;\n" |
|
5009 "ADD R2, R2, -R0;\n" |
|
5010 "DP4 R1.x, R1, c[9];\n" |
|
5011 "MAD result.color, R1.x, R2, R0;\n" |
|
5012 "END\n" |
|
5013 ; |
|
5014 |
|
5015 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY = |
|
5016 "!!ARBfp1.0\n" |
|
5017 "PARAM c[9] = { program.local[0..7],\n" |
|
5018 " { 1 } };\n" |
|
5019 "TEMP R0;\n" |
|
5020 "TEMP R1;\n" |
|
5021 "TEMP R2;\n" |
|
5022 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5023 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5024 "ADD R1.xyz, R0, c[3];\n" |
|
5025 "RCP R0.z, R1.z;\n" |
|
5026 "MUL R1.xy, R1, R0.z;\n" |
|
5027 "MUL R0.xy, fragment.position, c[5];\n" |
|
5028 "TEX R0, R0, texture[0], 2D;\n" |
|
5029 "MUL R1.xy, R1, c[0];\n" |
|
5030 "TEX R1, R1, texture[2], 2D;\n" |
|
5031 "ADD R2.x, -R0.w, c[8];\n" |
|
5032 "MUL R2.xyz, R1, R2.x;\n" |
|
5033 "MAD R1.xyz, R1, R0, R2;\n" |
|
5034 "ADD R2.x, -R1.w, c[8];\n" |
|
5035 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
5036 "ADD R1.z, R1.w, R0.w;\n" |
|
5037 "MAD R2.w, -R1, R0, R1.z;\n" |
|
5038 "ADD R1.xy, fragment.position, c[6];\n" |
|
5039 "MUL R1.xy, R1, c[4];\n" |
|
5040 "TEX R1, R1, texture[1], 2D;\n" |
|
5041 "ADD R2, R2, -R0;\n" |
|
5042 "DP4 R1.x, R1, c[7];\n" |
|
5043 "MAD result.color, R1.x, R2, R0;\n" |
|
5044 "END\n" |
|
5045 ; |
|
5046 |
|
5047 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN = |
|
5048 "!!ARBfp1.0\n" |
|
5049 "PARAM c[8] = { program.local[0..7] };\n" |
|
5050 "TEMP R0;\n" |
|
5051 "TEMP R1;\n" |
|
5052 "TEMP R2;\n" |
|
5053 "TEMP R3;\n" |
|
5054 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5055 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5056 "ADD R0.xyz, R0, c[3];\n" |
|
5057 "RCP R0.z, R0.z;\n" |
|
5058 "MUL R0.xy, R0, R0.z;\n" |
|
5059 "MUL R0.zw, R0.xyxy, c[0].xyxy;\n" |
|
5060 "ADD R3.xy, fragment.position, c[6];\n" |
|
5061 "TEX R1, R0.zwzw, texture[2], 2D;\n" |
|
5062 "MUL R0.xy, fragment.position, c[5];\n" |
|
5063 "TEX R0, R0, texture[0], 2D;\n" |
|
5064 "ADD R2, R1, R0;\n" |
|
5065 "MAD R2, -R1, R0, R2;\n" |
|
5066 "MUL R3.xy, R3, c[4];\n" |
|
5067 "TEX R1, R3, texture[1], 2D;\n" |
|
5068 "ADD R2, R2, -R0;\n" |
|
5069 "DP4 R1.x, R1, c[7];\n" |
|
5070 "MAD result.color, R1.x, R2, R0;\n" |
|
5071 "END\n" |
|
5072 ; |
|
5073 |
|
5074 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY = |
|
5075 "!!ARBfp1.0\n" |
|
5076 "PARAM c[9] = { program.local[0..7],\n" |
|
5077 " { 2, 1 } };\n" |
|
5078 "TEMP R0;\n" |
|
5079 "TEMP R1;\n" |
|
5080 "TEMP R2;\n" |
|
5081 "TEMP R3;\n" |
|
5082 "TEMP R4;\n" |
|
5083 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5084 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5085 "ADD R0.xyz, R0, c[3];\n" |
|
5086 "RCP R0.z, R0.z;\n" |
|
5087 "MUL R0.xy, R0, R0.z;\n" |
|
5088 "MUL R0.xy, R0, c[0];\n" |
|
5089 "TEX R0, R0, texture[2], 2D;\n" |
|
5090 "MUL R1.xy, fragment.position, c[5];\n" |
|
5091 "TEX R1, R1, texture[0], 2D;\n" |
|
5092 "ADD R2.w, -R1, c[8].y;\n" |
|
5093 "ADD R3.xyz, R0.w, -R0;\n" |
|
5094 "ADD R2.xyz, R1.w, -R1;\n" |
|
5095 "MUL R2.xyz, R2, R3;\n" |
|
5096 "MUL R2.xyz, R2, c[8].x;\n" |
|
5097 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
5098 "MUL R4.xyz, R0, R2.w;\n" |
|
5099 "MUL R3.xyz, R0, R1;\n" |
|
5100 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
5101 "ADD R2.x, -R0.w, c[8].y;\n" |
|
5102 "MAD R3.xyz, R3, c[8].x, R4;\n" |
|
5103 "MAD R3.xyz, R1, R2.x, R3;\n" |
|
5104 "MAD R0.xyz, R1, R2.x, R0;\n" |
|
5105 "MUL R2.xyz, R1, c[8].x;\n" |
|
5106 "ADD R0.xyz, R0, -R3;\n" |
|
5107 "SGE R2.xyz, R2, R1.w;\n" |
|
5108 "MAD R2.xyz, R2, R0, R3;\n" |
|
5109 "ADD R0.z, R0.w, R1.w;\n" |
|
5110 "MAD R2.w, -R0, R1, R0.z;\n" |
|
5111 "ADD R0.xy, fragment.position, c[6];\n" |
|
5112 "MUL R0.xy, R0, c[4];\n" |
|
5113 "TEX R0, R0, texture[1], 2D;\n" |
|
5114 "ADD R2, R2, -R1;\n" |
|
5115 "DP4 R0.x, R0, c[7];\n" |
|
5116 "MAD result.color, R0.x, R2, R1;\n" |
|
5117 "END\n" |
|
5118 ; |
|
5119 |
|
5120 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN = |
|
5121 "!!ARBfp1.0\n" |
|
5122 "PARAM c[9] = { program.local[0..7],\n" |
|
5123 " { 1 } };\n" |
|
5124 "TEMP R0;\n" |
|
5125 "TEMP R1;\n" |
|
5126 "TEMP R2;\n" |
|
5127 "TEMP R3;\n" |
|
5128 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5129 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5130 "ADD R0.xyz, R0, c[3];\n" |
|
5131 "RCP R0.z, R0.z;\n" |
|
5132 "MUL R0.zw, R0.xyxy, R0.z;\n" |
|
5133 "MUL R1.xy, R0.zwzw, c[0];\n" |
|
5134 "MUL R0.xy, fragment.position, c[5];\n" |
|
5135 "TEX R0, R0, texture[0], 2D;\n" |
|
5136 "TEX R1, R1, texture[2], 2D;\n" |
|
5137 "MUL R3.xyz, R1.w, R0;\n" |
|
5138 "MUL R2.xyz, R1, R0.w;\n" |
|
5139 "MIN R2.xyz, R2, R3;\n" |
|
5140 "ADD R2.w, -R0, c[8].x;\n" |
|
5141 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
5142 "ADD R2.x, -R1.w, c[8];\n" |
|
5143 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
5144 "ADD R1.z, R1.w, R0.w;\n" |
|
5145 "MAD R2.w, -R1, R0, R1.z;\n" |
|
5146 "ADD R1.xy, fragment.position, c[6];\n" |
|
5147 "MUL R1.xy, R1, c[4];\n" |
|
5148 "TEX R1, R1, texture[1], 2D;\n" |
|
5149 "ADD R2, R2, -R0;\n" |
|
5150 "DP4 R1.x, R1, c[7];\n" |
|
5151 "MAD result.color, R1.x, R2, R0;\n" |
|
5152 "END\n" |
|
5153 ; |
|
5154 |
|
5155 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN = |
|
5156 "!!ARBfp1.0\n" |
|
5157 "PARAM c[9] = { program.local[0..7],\n" |
|
5158 " { 1 } };\n" |
|
5159 "TEMP R0;\n" |
|
5160 "TEMP R1;\n" |
|
5161 "TEMP R2;\n" |
|
5162 "TEMP R3;\n" |
|
5163 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5164 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5165 "ADD R0.xyz, R0, c[3];\n" |
|
5166 "RCP R0.z, R0.z;\n" |
|
5167 "MUL R0.zw, R0.xyxy, R0.z;\n" |
|
5168 "MUL R1.xy, R0.zwzw, c[0];\n" |
|
5169 "MUL R0.xy, fragment.position, c[5];\n" |
|
5170 "TEX R0, R0, texture[0], 2D;\n" |
|
5171 "TEX R1, R1, texture[2], 2D;\n" |
|
5172 "MUL R3.xyz, R1.w, R0;\n" |
|
5173 "MUL R2.xyz, R1, R0.w;\n" |
|
5174 "MAX R2.xyz, R2, R3;\n" |
|
5175 "ADD R2.w, -R0, c[8].x;\n" |
|
5176 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
5177 "ADD R2.x, -R1.w, c[8];\n" |
|
5178 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
5179 "ADD R1.z, R1.w, R0.w;\n" |
|
5180 "MAD R2.w, -R1, R0, R1.z;\n" |
|
5181 "ADD R1.xy, fragment.position, c[6];\n" |
|
5182 "MUL R1.xy, R1, c[4];\n" |
|
5183 "TEX R1, R1, texture[1], 2D;\n" |
|
5184 "ADD R2, R2, -R0;\n" |
|
5185 "DP4 R1.x, R1, c[7];\n" |
|
5186 "MAD result.color, R1.x, R2, R0;\n" |
|
5187 "END\n" |
|
5188 ; |
|
5189 |
|
5190 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE = |
|
5191 "!!ARBfp1.0\n" |
|
5192 "PARAM c[9] = { program.local[0..7],\n" |
|
5193 " { 1, 1e-006 } };\n" |
|
5194 "TEMP R0;\n" |
|
5195 "TEMP R1;\n" |
|
5196 "TEMP R2;\n" |
|
5197 "TEMP R3;\n" |
|
5198 "TEMP R4;\n" |
|
5199 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5200 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5201 "ADD R0.xyz, R0, c[3];\n" |
|
5202 "RCP R0.z, R0.z;\n" |
|
5203 "MUL R0.xy, R0, R0.z;\n" |
|
5204 "MUL R0.xy, R0, c[0];\n" |
|
5205 "TEX R0, R0, texture[2], 2D;\n" |
|
5206 "MAX R1.x, R0.w, c[8].y;\n" |
|
5207 "RCP R1.x, R1.x;\n" |
|
5208 "MAD R2.xyz, -R0, R1.x, c[8].x;\n" |
|
5209 "MAX R2.xyz, R2, c[8].y;\n" |
|
5210 "MUL R1.xy, fragment.position, c[5];\n" |
|
5211 "TEX R1, R1, texture[0], 2D;\n" |
|
5212 "ADD R2.w, -R0, c[8].x;\n" |
|
5213 "MUL R3.xyz, R1, R2.w;\n" |
|
5214 "ADD R2.w, -R1, c[8].x;\n" |
|
5215 "MAD R4.xyz, R0, R2.w, R3;\n" |
|
5216 "MUL R3.xyz, R0.w, R1;\n" |
|
5217 "MUL R2.w, R0, R1;\n" |
|
5218 "MAD R0.xyz, R0, R1.w, R3;\n" |
|
5219 "SGE R0.xyz, R0, R2.w;\n" |
|
5220 "RCP R2.x, R2.x;\n" |
|
5221 "RCP R2.y, R2.y;\n" |
|
5222 "RCP R2.z, R2.z;\n" |
|
5223 "MAD R2.xyz, R3, R2, R4;\n" |
|
5224 "MAD R4.xyz, R0.w, R1.w, R4;\n" |
|
5225 "ADD R4.xyz, R4, -R2;\n" |
|
5226 "MAD R2.xyz, R0, R4, R2;\n" |
|
5227 "ADD R0.z, R0.w, R1.w;\n" |
|
5228 "MAD R2.w, -R0, R1, R0.z;\n" |
|
5229 "ADD R0.xy, fragment.position, c[6];\n" |
|
5230 "MUL R0.xy, R0, c[4];\n" |
|
5231 "TEX R0, R0, texture[1], 2D;\n" |
|
5232 "ADD R2, R2, -R1;\n" |
|
5233 "DP4 R0.x, R0, c[7];\n" |
|
5234 "MAD result.color, R0.x, R2, R1;\n" |
|
5235 "END\n" |
|
5236 ; |
|
5237 |
|
5238 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN = |
|
5239 "!!ARBfp1.0\n" |
|
5240 "PARAM c[9] = { program.local[0..7],\n" |
|
5241 " { 1, 9.9999997e-006 } };\n" |
|
5242 "TEMP R0;\n" |
|
5243 "TEMP R1;\n" |
|
5244 "TEMP R2;\n" |
|
5245 "TEMP R3;\n" |
|
5246 "TEMP R4;\n" |
|
5247 "TEMP R5;\n" |
|
5248 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5249 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5250 "ADD R0.xyz, R0, c[3];\n" |
|
5251 "RCP R0.z, R0.z;\n" |
|
5252 "MUL R0.xy, R0, R0.z;\n" |
|
5253 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
5254 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
5255 "MUL R0.xy, R0, c[0];\n" |
|
5256 "TEX R0, R0, texture[2], 2D;\n" |
|
5257 "MUL R2.xyz, R0.w, R1;\n" |
|
5258 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
5259 "MAD R2.xyz, -R0.w, R1.w, R3;\n" |
|
5260 "MUL R4.xyz, R0.w, R2;\n" |
|
5261 "MAX R2.xyz, R0, c[8].y;\n" |
|
5262 "ADD R2.w, -R1, c[8].x;\n" |
|
5263 "MUL R5.xyz, R0, R2.w;\n" |
|
5264 "ADD R3.w, -R0, c[8].x;\n" |
|
5265 "RCP R2.x, R2.x;\n" |
|
5266 "RCP R2.y, R2.y;\n" |
|
5267 "RCP R2.z, R2.z;\n" |
|
5268 "MAD R2.xyz, R4, R2, R5;\n" |
|
5269 "MUL R4.xyz, R1, R3.w;\n" |
|
5270 "MAD R0.xyz, R0, R2.w, R4;\n" |
|
5271 "MUL R2.w, R0, R1;\n" |
|
5272 "MAD R2.xyz, R1, R3.w, R2;\n" |
|
5273 "ADD R2.xyz, R2, -R0;\n" |
|
5274 "SGE R3.xyz, R3, R2.w;\n" |
|
5275 "MAD R2.xyz, R3, R2, R0;\n" |
|
5276 "ADD R0.z, R0.w, R1.w;\n" |
|
5277 "MAD R2.w, -R0, R1, R0.z;\n" |
|
5278 "ADD R0.xy, fragment.position, c[6];\n" |
|
5279 "MUL R0.xy, R0, c[4];\n" |
|
5280 "TEX R0, R0, texture[1], 2D;\n" |
|
5281 "ADD R2, R2, -R1;\n" |
|
5282 "DP4 R0.x, R0, c[7];\n" |
|
5283 "MAD result.color, R0.x, R2, R1;\n" |
|
5284 "END\n" |
|
5285 ; |
|
5286 |
|
5287 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT = |
|
5288 "!!ARBfp1.0\n" |
|
5289 "PARAM c[9] = { program.local[0..7],\n" |
|
5290 " { 2, 1 } };\n" |
|
5291 "TEMP R0;\n" |
|
5292 "TEMP R1;\n" |
|
5293 "TEMP R2;\n" |
|
5294 "TEMP R3;\n" |
|
5295 "TEMP R4;\n" |
|
5296 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5297 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5298 "ADD R0.xyz, R0, c[3];\n" |
|
5299 "RCP R0.z, R0.z;\n" |
|
5300 "MUL R0.xy, R0, R0.z;\n" |
|
5301 "MUL R0.xy, R0, c[0];\n" |
|
5302 "TEX R0, R0, texture[2], 2D;\n" |
|
5303 "MUL R1.xy, fragment.position, c[5];\n" |
|
5304 "TEX R1, R1, texture[0], 2D;\n" |
|
5305 "ADD R2.w, -R1, c[8].y;\n" |
|
5306 "ADD R3.xyz, R0.w, -R0;\n" |
|
5307 "ADD R2.xyz, R1.w, -R1;\n" |
|
5308 "MUL R2.xyz, R2, R3;\n" |
|
5309 "MUL R2.xyz, R2, c[8].x;\n" |
|
5310 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
5311 "MUL R4.xyz, R0, R2.w;\n" |
|
5312 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
5313 "MUL R3.xyz, R0, R1;\n" |
|
5314 "ADD R2.w, -R0, c[8].y;\n" |
|
5315 "MAD R3.xyz, R3, c[8].x, R4;\n" |
|
5316 "MUL R0.xyz, R0, c[8].x;\n" |
|
5317 "SGE R0.xyz, R0, R0.w;\n" |
|
5318 "MAD R3.xyz, R1, R2.w, R3;\n" |
|
5319 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
5320 "ADD R2.xyz, R2, -R3;\n" |
|
5321 "MAD R2.xyz, R0, R2, R3;\n" |
|
5322 "ADD R0.z, R0.w, R1.w;\n" |
|
5323 "MAD R2.w, -R0, R1, R0.z;\n" |
|
5324 "ADD R0.xy, fragment.position, c[6];\n" |
|
5325 "MUL R0.xy, R0, c[4];\n" |
|
5326 "TEX R0, R0, texture[1], 2D;\n" |
|
5327 "ADD R2, R2, -R1;\n" |
|
5328 "DP4 R0.x, R0, c[7];\n" |
|
5329 "MAD result.color, R0.x, R2, R1;\n" |
|
5330 "END\n" |
|
5331 ; |
|
5332 |
|
5333 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT = |
|
5334 "!!ARBfp1.0\n" |
|
5335 "PARAM c[10] = { program.local[0..7],\n" |
|
5336 " { 1, 2, 9.9999997e-006, 8 },\n" |
|
5337 " { 3 } };\n" |
|
5338 "TEMP R0;\n" |
|
5339 "TEMP R1;\n" |
|
5340 "TEMP R2;\n" |
|
5341 "TEMP R3;\n" |
|
5342 "TEMP R4;\n" |
|
5343 "TEMP R5;\n" |
|
5344 "TEMP R6;\n" |
|
5345 "MUL R0.xy, fragment.position, c[5];\n" |
|
5346 "TEX R1, R0, texture[0], 2D;\n" |
|
5347 "MAX R0.x, R1.w, c[8].z;\n" |
|
5348 "RCP R2.w, R0.x;\n" |
|
5349 "MUL R2.xyz, R1, R2.w;\n" |
|
5350 "RSQ R0.w, R2.x;\n" |
|
5351 "RCP R3.x, R0.w;\n" |
|
5352 "RSQ R0.w, R2.y;\n" |
|
5353 "MUL R5.xyz, -R2, c[8].w;\n" |
|
5354 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5355 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5356 "ADD R0.xyz, R0, c[3];\n" |
|
5357 "RCP R0.z, R0.z;\n" |
|
5358 "MUL R0.xy, R0, R0.z;\n" |
|
5359 "RSQ R0.z, R2.z;\n" |
|
5360 "MAD R2.xyz, -R1, R2.w, c[8].x;\n" |
|
5361 "RCP R3.y, R0.w;\n" |
|
5362 "RCP R3.z, R0.z;\n" |
|
5363 "MUL R0.xy, R0, c[0];\n" |
|
5364 "TEX R0, R0, texture[2], 2D;\n" |
|
5365 "MAD R4.xyz, R1.w, R3, -R1;\n" |
|
5366 "MAD R3.xyz, R0, c[8].y, -R0.w;\n" |
|
5367 "MUL R4.xyz, R3, R4;\n" |
|
5368 "ADD R6.xyz, R5, c[9].x;\n" |
|
5369 "MUL R5.xyz, R2, R3;\n" |
|
5370 "MAD R2.xyz, -R2, R3, R0.w;\n" |
|
5371 "MUL R3.xyz, R0, c[8].y;\n" |
|
5372 "MAD R6.xyz, -R5, R6, R0.w;\n" |
|
5373 "MAD R4.xyz, R0.w, R1, R4;\n" |
|
5374 "MAD R5.xyz, -R1, R6, R4;\n" |
|
5375 "MUL R4.xyz, R1, c[8].w;\n" |
|
5376 "SGE R3.xyz, R3, R0.w;\n" |
|
5377 "ADD R2.w, -R1, c[8].x;\n" |
|
5378 "MUL R6.xyz, R1, R6;\n" |
|
5379 "SGE R4.xyz, R4, R1.w;\n" |
|
5380 "MAD R4.xyz, R4, R5, R6;\n" |
|
5381 "MAD R4.xyz, -R1, R2, R4;\n" |
|
5382 "MUL R2.xyz, R1, R2;\n" |
|
5383 "MAD R2.xyz, R3, R4, R2;\n" |
|
5384 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
5385 "ADD R0.x, -R0.w, c[8];\n" |
|
5386 "MAD R2.xyz, R1, R0.x, R2;\n" |
|
5387 "ADD R0.z, R0.w, R1.w;\n" |
|
5388 "MAD R2.w, -R0, R1, R0.z;\n" |
|
5389 "ADD R0.xy, fragment.position, c[6];\n" |
|
5390 "MUL R0.xy, R0, c[4];\n" |
|
5391 "TEX R0, R0, texture[1], 2D;\n" |
|
5392 "ADD R2, R2, -R1;\n" |
|
5393 "DP4 R0.x, R0, c[7];\n" |
|
5394 "MAD result.color, R0.x, R2, R1;\n" |
|
5395 "END\n" |
|
5396 ; |
|
5397 |
|
5398 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE = |
|
5399 "!!ARBfp1.0\n" |
|
5400 "PARAM c[9] = { program.local[0..7],\n" |
|
5401 " { 2 } };\n" |
|
5402 "TEMP R0;\n" |
|
5403 "TEMP R1;\n" |
|
5404 "TEMP R2;\n" |
|
5405 "TEMP R3;\n" |
|
5406 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5407 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5408 "ADD R0.xyz, R0, c[3];\n" |
|
5409 "RCP R0.z, R0.z;\n" |
|
5410 "MUL R0.zw, R0.xyxy, R0.z;\n" |
|
5411 "MUL R1.xy, R0.zwzw, c[0];\n" |
|
5412 "MUL R0.xy, fragment.position, c[5];\n" |
|
5413 "TEX R0, R0, texture[0], 2D;\n" |
|
5414 "TEX R1, R1, texture[2], 2D;\n" |
|
5415 "ADD R2.xyz, R1, R0;\n" |
|
5416 "MUL R3.xyz, R1.w, R0;\n" |
|
5417 "MUL R1.xyz, R1, R0.w;\n" |
|
5418 "MIN R1.xyz, R1, R3;\n" |
|
5419 "MAD R2.xyz, -R1, c[8].x, R2;\n" |
|
5420 "ADD R1.z, R1.w, R0.w;\n" |
|
5421 "MAD R2.w, -R1, R0, R1.z;\n" |
|
5422 "ADD R1.xy, fragment.position, c[6];\n" |
|
5423 "MUL R1.xy, R1, c[4];\n" |
|
5424 "TEX R1, R1, texture[1], 2D;\n" |
|
5425 "ADD R2, R2, -R0;\n" |
|
5426 "DP4 R1.x, R1, c[7];\n" |
|
5427 "MAD result.color, R1.x, R2, R0;\n" |
|
5428 "END\n" |
|
5429 ; |
|
5430 |
|
5431 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION = |
|
5432 "!!ARBfp1.0\n" |
|
5433 "PARAM c[9] = { program.local[0..7],\n" |
|
5434 " { 2, 1 } };\n" |
|
5435 "TEMP R0;\n" |
|
5436 "TEMP R1;\n" |
|
5437 "TEMP R2;\n" |
|
5438 "TEMP R3;\n" |
|
5439 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5440 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5441 "ADD R0.xyz, R0, c[3];\n" |
|
5442 "RCP R0.z, R0.z;\n" |
|
5443 "MUL R0.zw, R0.xyxy, R0.z;\n" |
|
5444 "MUL R1.xy, R0.zwzw, c[0];\n" |
|
5445 "MUL R0.xy, fragment.position, c[5];\n" |
|
5446 "TEX R0, R0, texture[0], 2D;\n" |
|
5447 "TEX R1, R1, texture[2], 2D;\n" |
|
5448 "MUL R2.xyz, R1.w, R0;\n" |
|
5449 "MAD R3.xyz, R1, R0.w, R2;\n" |
|
5450 "MUL R2.xyz, R1, R0;\n" |
|
5451 "MAD R2.xyz, -R2, c[8].x, R3;\n" |
|
5452 "ADD R2.w, -R0, c[8].y;\n" |
|
5453 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
5454 "ADD R2.x, -R1.w, c[8].y;\n" |
|
5455 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
5456 "ADD R1.z, R1.w, R0.w;\n" |
|
5457 "MAD R2.w, -R1, R0, R1.z;\n" |
|
5458 "ADD R1.xy, fragment.position, c[6];\n" |
|
5459 "MUL R1.xy, R1, c[4];\n" |
|
5460 "TEX R1, R1, texture[1], 2D;\n" |
|
5461 "ADD R2, R2, -R0;\n" |
|
5462 "DP4 R1.x, R1, c[7];\n" |
|
5463 "MAD result.color, R1.x, R2, R0;\n" |
|
5464 "END\n" |
|
5465 ; |
|
5466 |
|
5467 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = |
|
5468 "!!ARBfp1.0\n" |
|
5469 "PARAM c[8] = { program.local[0..6],\n" |
|
5470 " { 1 } };\n" |
|
5471 "TEMP R0;\n" |
|
5472 "TEMP R1;\n" |
|
5473 "TEMP R2;\n" |
|
5474 "TEMP R3;\n" |
|
5475 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5476 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5477 "ADD R0.xyz, R0, c[3];\n" |
|
5478 "RCP R0.z, R0.z;\n" |
|
5479 "MUL R0.xy, R0, R0.z;\n" |
|
5480 "MUL R1.xy, fragment.position, c[6];\n" |
|
5481 "TEX R1, R1, texture[0], 2D;\n" |
|
5482 "MUL R2.xyz, R1, c[4].y;\n" |
|
5483 "MUL R0.xy, R0, c[0];\n" |
|
5484 "TEX R0, R0, texture[1], 2D;\n" |
|
5485 "MUL R3.xyz, R0.w, R2;\n" |
|
5486 "MUL R2.xyz, R0, c[4].x;\n" |
|
5487 "MAD R2.xyz, R1.w, R2, R3;\n" |
|
5488 "ADD R2.w, -R1, c[7].x;\n" |
|
5489 "MUL R0.xyz, R0, c[5].y;\n" |
|
5490 "MAD R0.xyz, R2.w, R0, R2;\n" |
|
5491 "ADD R2.x, -R0.w, c[7];\n" |
|
5492 "MUL R1.xyz, R1, c[5].z;\n" |
|
5493 "MAD result.color.xyz, R2.x, R1, R0;\n" |
|
5494 "MUL R0.x, R0.w, R1.w;\n" |
|
5495 "MUL R0.z, R1.w, R2.x;\n" |
|
5496 "MUL R0.y, R0.w, R2.w;\n" |
|
5497 "DP3 result.color.w, R0, c[5];\n" |
|
5498 "END\n" |
|
5499 ; |
|
5500 |
|
5501 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY_NOMASK = |
|
5502 "!!ARBfp1.0\n" |
|
5503 "PARAM c[6] = { program.local[0..4],\n" |
|
5504 " { 1 } };\n" |
|
5505 "TEMP R0;\n" |
|
5506 "TEMP R1;\n" |
|
5507 "TEMP R2;\n" |
|
5508 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5509 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5510 "ADD R0.xyz, R0, c[3];\n" |
|
5511 "RCP R0.z, R0.z;\n" |
|
5512 "MUL R0.xy, R0, R0.z;\n" |
|
5513 "MUL R1.xy, fragment.position, c[4];\n" |
|
5514 "TEX R1, R1, texture[0], 2D;\n" |
|
5515 "MUL R0.xy, R0, c[0];\n" |
|
5516 "TEX R0, R0, texture[1], 2D;\n" |
|
5517 "ADD R2.x, -R1.w, c[5];\n" |
|
5518 "MUL R2.xyz, R0, R2.x;\n" |
|
5519 "MAD R0.xyz, R0, R1, R2;\n" |
|
5520 "ADD R2.x, R0.w, R1.w;\n" |
|
5521 "ADD R2.y, -R0.w, c[5].x;\n" |
|
5522 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
5523 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
5524 "END\n" |
|
5525 ; |
|
5526 |
|
5527 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN_NOMASK = |
|
5528 "!!ARBfp1.0\n" |
|
5529 "PARAM c[5] = { program.local[0..4] };\n" |
|
5530 "TEMP R0;\n" |
|
5531 "TEMP R1;\n" |
|
5532 "TEMP R2;\n" |
|
5533 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5534 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5535 "ADD R0.xyz, R0, c[3];\n" |
|
5536 "RCP R0.z, R0.z;\n" |
|
5537 "MUL R0.xy, R0, R0.z;\n" |
|
5538 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
5539 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
5540 "MUL R0.xy, R0, c[0];\n" |
|
5541 "TEX R0, R0, texture[1], 2D;\n" |
|
5542 "ADD R2, R0, R1;\n" |
|
5543 "MAD result.color, -R0, R1, R2;\n" |
|
5544 "END\n" |
|
5545 ; |
|
5546 |
|
5547 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY_NOMASK = |
|
5548 "!!ARBfp1.0\n" |
|
5549 "PARAM c[6] = { program.local[0..4],\n" |
|
5550 " { 2, 1 } };\n" |
|
5551 "TEMP R0;\n" |
|
5552 "TEMP R1;\n" |
|
5553 "TEMP R2;\n" |
|
5554 "TEMP R3;\n" |
|
5555 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5556 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5557 "ADD R0.xyz, R0, c[3];\n" |
|
5558 "RCP R0.z, R0.z;\n" |
|
5559 "MUL R0.xy, R0, R0.z;\n" |
|
5560 "MUL R0.xy, R0, c[0];\n" |
|
5561 "TEX R0, R0, texture[1], 2D;\n" |
|
5562 "MUL R1.xy, fragment.position, c[4];\n" |
|
5563 "TEX R1, R1, texture[0], 2D;\n" |
|
5564 "ADD R3.xyz, R0.w, -R0;\n" |
|
5565 "ADD R2.xyz, R1.w, -R1;\n" |
|
5566 "MUL R2.xyz, R2, R3;\n" |
|
5567 "ADD R2.w, -R1, c[5].y;\n" |
|
5568 "MUL R2.xyz, R2, c[5].x;\n" |
|
5569 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
5570 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
5571 "MUL R3.xyz, R0, R2.w;\n" |
|
5572 "MUL R0.xyz, R0, R1;\n" |
|
5573 "ADD R2.w, -R0, c[5].y;\n" |
|
5574 "MAD R0.xyz, R0, c[5].x, R3;\n" |
|
5575 "MAD R0.xyz, R1, R2.w, R0;\n" |
|
5576 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
5577 "MUL R1.xyz, R1, c[5].x;\n" |
|
5578 "ADD R2.w, R0, R1;\n" |
|
5579 "ADD R2.xyz, R2, -R0;\n" |
|
5580 "SGE R1.xyz, R1, R1.w;\n" |
|
5581 "MAD result.color.xyz, R1, R2, R0;\n" |
|
5582 "MAD result.color.w, -R0, R1, R2;\n" |
|
5583 "END\n" |
|
5584 ; |
|
5585 |
|
5586 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN_NOMASK = |
|
5587 "!!ARBfp1.0\n" |
|
5588 "PARAM c[6] = { program.local[0..4],\n" |
|
5589 " { 1 } };\n" |
|
5590 "TEMP R0;\n" |
|
5591 "TEMP R1;\n" |
|
5592 "TEMP R2;\n" |
|
5593 "TEMP R3;\n" |
|
5594 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5595 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5596 "ADD R0.xyz, R0, c[3];\n" |
|
5597 "RCP R0.z, R0.z;\n" |
|
5598 "MUL R0.xy, R0, R0.z;\n" |
|
5599 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
5600 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
5601 "MUL R0.xy, R0, c[0];\n" |
|
5602 "TEX R0, R0, texture[1], 2D;\n" |
|
5603 "MUL R2.xyz, R0, R1.w;\n" |
|
5604 "MUL R3.xyz, R0.w, R1;\n" |
|
5605 "MIN R2.xyz, R2, R3;\n" |
|
5606 "ADD R2.w, -R1, c[5].x;\n" |
|
5607 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
5608 "ADD R2.x, R0.w, R1.w;\n" |
|
5609 "ADD R2.y, -R0.w, c[5].x;\n" |
|
5610 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
5611 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
5612 "END\n" |
|
5613 ; |
|
5614 |
|
5615 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN_NOMASK = |
|
5616 "!!ARBfp1.0\n" |
|
5617 "PARAM c[6] = { program.local[0..4],\n" |
|
5618 " { 1 } };\n" |
|
5619 "TEMP R0;\n" |
|
5620 "TEMP R1;\n" |
|
5621 "TEMP R2;\n" |
|
5622 "TEMP R3;\n" |
|
5623 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5624 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5625 "ADD R0.xyz, R0, c[3];\n" |
|
5626 "RCP R0.z, R0.z;\n" |
|
5627 "MUL R0.xy, R0, R0.z;\n" |
|
5628 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
5629 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
5630 "MUL R0.xy, R0, c[0];\n" |
|
5631 "TEX R0, R0, texture[1], 2D;\n" |
|
5632 "MUL R2.xyz, R0, R1.w;\n" |
|
5633 "MUL R3.xyz, R0.w, R1;\n" |
|
5634 "MAX R2.xyz, R2, R3;\n" |
|
5635 "ADD R2.w, -R1, c[5].x;\n" |
|
5636 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
5637 "ADD R2.x, R0.w, R1.w;\n" |
|
5638 "ADD R2.y, -R0.w, c[5].x;\n" |
|
5639 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
5640 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
5641 "END\n" |
|
5642 ; |
|
5643 |
|
5644 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE_NOMASK = |
|
5645 "!!ARBfp1.0\n" |
|
5646 "PARAM c[6] = { program.local[0..4],\n" |
|
5647 " { 1, 1e-006 } };\n" |
|
5648 "TEMP R0;\n" |
|
5649 "TEMP R1;\n" |
|
5650 "TEMP R2;\n" |
|
5651 "TEMP R3;\n" |
|
5652 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5653 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5654 "ADD R0.xyz, R0, c[3];\n" |
|
5655 "RCP R0.z, R0.z;\n" |
|
5656 "MUL R0.xy, R0, R0.z;\n" |
|
5657 "MUL R0.xy, R0, c[0];\n" |
|
5658 "TEX R0, R0, texture[1], 2D;\n" |
|
5659 "MAX R1.x, R0.w, c[5].y;\n" |
|
5660 "RCP R1.x, R1.x;\n" |
|
5661 "MAD R3.xyz, -R0, R1.x, c[5].x;\n" |
|
5662 "MAX R3.xyz, R3, c[5].y;\n" |
|
5663 "MUL R1.xy, fragment.position, c[4];\n" |
|
5664 "TEX R1, R1, texture[0], 2D;\n" |
|
5665 "ADD R2.x, -R0.w, c[5];\n" |
|
5666 "MUL R2.xyz, R1, R2.x;\n" |
|
5667 "ADD R2.w, -R1, c[5].x;\n" |
|
5668 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
5669 "MUL R1.xyz, R0.w, R1;\n" |
|
5670 "MAD R0.xyz, R0, R1.w, R1;\n" |
|
5671 "MUL R2.w, R0, R1;\n" |
|
5672 "RCP R3.x, R3.x;\n" |
|
5673 "RCP R3.y, R3.y;\n" |
|
5674 "RCP R3.z, R3.z;\n" |
|
5675 "MAD R3.xyz, R1, R3, R2;\n" |
|
5676 "MAD R2.xyz, R0.w, R1.w, R2;\n" |
|
5677 "ADD R1.x, R0.w, R1.w;\n" |
|
5678 "ADD R2.xyz, R2, -R3;\n" |
|
5679 "SGE R0.xyz, R0, R2.w;\n" |
|
5680 "MAD result.color.xyz, R0, R2, R3;\n" |
|
5681 "MAD result.color.w, -R0, R1, R1.x;\n" |
|
5682 "END\n" |
|
5683 ; |
|
5684 |
|
5685 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN_NOMASK = |
|
5686 "!!ARBfp1.0\n" |
|
5687 "PARAM c[6] = { program.local[0..4],\n" |
|
5688 " { 1, 9.9999997e-006 } };\n" |
|
5689 "TEMP R0;\n" |
|
5690 "TEMP R1;\n" |
|
5691 "TEMP R2;\n" |
|
5692 "TEMP R3;\n" |
|
5693 "TEMP R4;\n" |
|
5694 "TEMP R5;\n" |
|
5695 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5696 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5697 "ADD R0.xyz, R0, c[3];\n" |
|
5698 "RCP R0.z, R0.z;\n" |
|
5699 "MUL R0.xy, R0, R0.z;\n" |
|
5700 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
5701 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
5702 "MUL R0.xy, R0, c[0];\n" |
|
5703 "TEX R0, R0, texture[1], 2D;\n" |
|
5704 "MUL R2.xyz, R0.w, R1;\n" |
|
5705 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
5706 "ADD R2.w, -R1, c[5].x;\n" |
|
5707 "MAD R2.xyz, -R0.w, R1.w, R3;\n" |
|
5708 "MUL R4.xyz, R0.w, R2;\n" |
|
5709 "MAX R2.xyz, R0, c[5].y;\n" |
|
5710 "MUL R5.xyz, R0, R2.w;\n" |
|
5711 "ADD R3.w, -R0, c[5].x;\n" |
|
5712 "RCP R2.x, R2.x;\n" |
|
5713 "RCP R2.y, R2.y;\n" |
|
5714 "RCP R2.z, R2.z;\n" |
|
5715 "MAD R2.xyz, R4, R2, R5;\n" |
|
5716 "MUL R4.xyz, R1, R3.w;\n" |
|
5717 "MAD R1.xyz, R1, R3.w, R2;\n" |
|
5718 "MAD R0.xyz, R0, R2.w, R4;\n" |
|
5719 "MUL R2.x, R0.w, R1.w;\n" |
|
5720 "ADD R2.w, R0, R1;\n" |
|
5721 "ADD R1.xyz, R1, -R0;\n" |
|
5722 "SGE R2.xyz, R3, R2.x;\n" |
|
5723 "MAD result.color.xyz, R2, R1, R0;\n" |
|
5724 "MAD result.color.w, -R0, R1, R2;\n" |
|
5725 "END\n" |
|
5726 ; |
|
5727 |
|
5728 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT_NOMASK = |
|
5729 "!!ARBfp1.0\n" |
|
5730 "PARAM c[6] = { program.local[0..4],\n" |
|
5731 " { 2, 1 } };\n" |
|
5732 "TEMP R0;\n" |
|
5733 "TEMP R1;\n" |
|
5734 "TEMP R2;\n" |
|
5735 "TEMP R3;\n" |
|
5736 "TEMP R4;\n" |
|
5737 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5738 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5739 "ADD R0.xyz, R0, c[3];\n" |
|
5740 "RCP R0.z, R0.z;\n" |
|
5741 "MUL R0.xy, R0, R0.z;\n" |
|
5742 "MUL R0.xy, R0, c[0];\n" |
|
5743 "TEX R0, R0, texture[1], 2D;\n" |
|
5744 "MUL R1.xy, fragment.position, c[4];\n" |
|
5745 "TEX R1, R1, texture[0], 2D;\n" |
|
5746 "ADD R2.w, -R1, c[5].y;\n" |
|
5747 "ADD R3.xyz, R0.w, -R0;\n" |
|
5748 "ADD R2.xyz, R1.w, -R1;\n" |
|
5749 "MUL R2.xyz, R2, R3;\n" |
|
5750 "MUL R2.xyz, R2, c[5].x;\n" |
|
5751 "MAD R2.xyz, R0.w, R1.w, -R2;\n" |
|
5752 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
5753 "MUL R4.xyz, R0, R2.w;\n" |
|
5754 "MUL R3.xyz, R0, R1;\n" |
|
5755 "MUL R0.xyz, R0, c[5].x;\n" |
|
5756 "ADD R2.w, -R0, c[5].y;\n" |
|
5757 "MAD R3.xyz, R3, c[5].x, R4;\n" |
|
5758 "MAD R3.xyz, R1, R2.w, R3;\n" |
|
5759 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
5760 "ADD R2.x, R0.w, R1.w;\n" |
|
5761 "ADD R1.xyz, R1, -R3;\n" |
|
5762 "SGE R0.xyz, R0, R0.w;\n" |
|
5763 "MAD result.color.xyz, R0, R1, R3;\n" |
|
5764 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
5765 "END\n" |
|
5766 ; |
|
5767 |
|
5768 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT_NOMASK = |
|
5769 "!!ARBfp1.0\n" |
|
5770 "PARAM c[7] = { program.local[0..4],\n" |
|
5771 " { 1, 2, 9.9999997e-006, 8 },\n" |
|
5772 " { 3 } };\n" |
|
5773 "TEMP R0;\n" |
|
5774 "TEMP R1;\n" |
|
5775 "TEMP R2;\n" |
|
5776 "TEMP R3;\n" |
|
5777 "TEMP R4;\n" |
|
5778 "TEMP R5;\n" |
|
5779 "TEMP R6;\n" |
|
5780 "MUL R0.xy, fragment.position, c[4];\n" |
|
5781 "TEX R1, R0, texture[0], 2D;\n" |
|
5782 "MAX R0.x, R1.w, c[5].z;\n" |
|
5783 "RCP R2.w, R0.x;\n" |
|
5784 "MUL R2.xyz, R1, R2.w;\n" |
|
5785 "RSQ R0.w, R2.x;\n" |
|
5786 "RCP R3.x, R0.w;\n" |
|
5787 "RSQ R0.w, R2.y;\n" |
|
5788 "MUL R5.xyz, -R2, c[5].w;\n" |
|
5789 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5790 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5791 "ADD R0.xyz, R0, c[3];\n" |
|
5792 "RCP R0.z, R0.z;\n" |
|
5793 "MUL R0.xy, R0, R0.z;\n" |
|
5794 "RSQ R0.z, R2.z;\n" |
|
5795 "MAD R2.xyz, -R1, R2.w, c[5].x;\n" |
|
5796 "RCP R3.y, R0.w;\n" |
|
5797 "RCP R3.z, R0.z;\n" |
|
5798 "MUL R0.xy, R0, c[0];\n" |
|
5799 "TEX R0, R0, texture[1], 2D;\n" |
|
5800 "MAD R4.xyz, R1.w, R3, -R1;\n" |
|
5801 "MAD R3.xyz, R0, c[5].y, -R0.w;\n" |
|
5802 "MUL R4.xyz, R3, R4;\n" |
|
5803 "ADD R6.xyz, R5, c[6].x;\n" |
|
5804 "MUL R5.xyz, R2, R3;\n" |
|
5805 "MAD R2.xyz, -R2, R3, R0.w;\n" |
|
5806 "MUL R3.xyz, R0, c[5].y;\n" |
|
5807 "MAD R6.xyz, -R5, R6, R0.w;\n" |
|
5808 "MAD R4.xyz, R0.w, R1, R4;\n" |
|
5809 "MAD R5.xyz, -R1, R6, R4;\n" |
|
5810 "MUL R4.xyz, R1, c[5].w;\n" |
|
5811 "MUL R6.xyz, R1, R6;\n" |
|
5812 "SGE R4.xyz, R4, R1.w;\n" |
|
5813 "MAD R4.xyz, R4, R5, R6;\n" |
|
5814 "MAD R4.xyz, -R1, R2, R4;\n" |
|
5815 "MUL R2.xyz, R1, R2;\n" |
|
5816 "SGE R3.xyz, R3, R0.w;\n" |
|
5817 "MAD R2.xyz, R3, R4, R2;\n" |
|
5818 "ADD R2.w, -R1, c[5].x;\n" |
|
5819 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
5820 "ADD R0.x, R0.w, R1.w;\n" |
|
5821 "ADD R0.y, -R0.w, c[5].x;\n" |
|
5822 "MAD result.color.xyz, R1, R0.y, R2;\n" |
|
5823 "MAD result.color.w, -R0, R1, R0.x;\n" |
|
5824 "END\n" |
|
5825 ; |
|
5826 |
|
5827 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE_NOMASK = |
|
5828 "!!ARBfp1.0\n" |
|
5829 "PARAM c[6] = { program.local[0..4],\n" |
|
5830 " { 2 } };\n" |
|
5831 "TEMP R0;\n" |
|
5832 "TEMP R1;\n" |
|
5833 "TEMP R2;\n" |
|
5834 "TEMP R3;\n" |
|
5835 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5836 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5837 "ADD R0.xyz, R0, c[3];\n" |
|
5838 "RCP R0.z, R0.z;\n" |
|
5839 "MUL R0.xy, R0, R0.z;\n" |
|
5840 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
5841 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
5842 "MUL R0.xy, R0, c[0];\n" |
|
5843 "TEX R0, R0, texture[1], 2D;\n" |
|
5844 "MUL R2.xyz, R0, R1.w;\n" |
|
5845 "MUL R3.xyz, R0.w, R1;\n" |
|
5846 "ADD R0.xyz, R0, R1;\n" |
|
5847 "MIN R2.xyz, R2, R3;\n" |
|
5848 "ADD R1.x, R0.w, R1.w;\n" |
|
5849 "MAD result.color.xyz, -R2, c[5].x, R0;\n" |
|
5850 "MAD result.color.w, -R0, R1, R1.x;\n" |
|
5851 "END\n" |
|
5852 ; |
|
5853 |
|
5854 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION_NOMASK = |
|
5855 "!!ARBfp1.0\n" |
|
5856 "PARAM c[6] = { program.local[0..4],\n" |
|
5857 " { 2, 1 } };\n" |
|
5858 "TEMP R0;\n" |
|
5859 "TEMP R1;\n" |
|
5860 "TEMP R2;\n" |
|
5861 "TEMP R3;\n" |
|
5862 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5863 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5864 "ADD R0.xyz, R0, c[3];\n" |
|
5865 "RCP R0.z, R0.z;\n" |
|
5866 "MUL R0.xy, R0, R0.z;\n" |
|
5867 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
5868 "TEX R1, R0.zwzw, texture[0], 2D;\n" |
|
5869 "MUL R0.xy, R0, c[0];\n" |
|
5870 "TEX R0, R0, texture[1], 2D;\n" |
|
5871 "MUL R2.xyz, R0.w, R1;\n" |
|
5872 "MAD R3.xyz, R0, R1.w, R2;\n" |
|
5873 "MUL R2.xyz, R0, R1;\n" |
|
5874 "MAD R2.xyz, -R2, c[5].x, R3;\n" |
|
5875 "ADD R2.w, -R1, c[5].y;\n" |
|
5876 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
5877 "ADD R2.x, R0.w, R1.w;\n" |
|
5878 "ADD R2.y, -R0.w, c[5];\n" |
|
5879 "MAD result.color.xyz, R1, R2.y, R0;\n" |
|
5880 "MAD result.color.w, -R0, R1, R2.x;\n" |
|
5881 "END\n" |
|
5882 ; |
|
5883 |
|
5884 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_MASK = |
|
5885 "!!ARBfp1.0\n" |
|
5886 "PARAM c[7] = { program.local[0..6] };\n" |
|
5887 "TEMP R0;\n" |
|
5888 "TEMP R1;\n" |
|
5889 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5890 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5891 "ADD R1.xyz, R0, c[3];\n" |
|
5892 "RCP R0.z, R1.z;\n" |
|
5893 "MUL R1.xy, R1, R0.z;\n" |
|
5894 "ADD R0.xy, fragment.position, c[5];\n" |
|
5895 "MUL R0.xy, R0, c[4];\n" |
|
5896 "TEX R0, R0, texture[0], 2D;\n" |
|
5897 "DP4 R1.z, R0, c[6];\n" |
|
5898 "MUL R1.xy, R1, c[0];\n" |
|
5899 "TEX R0, R1, texture[1], 2D;\n" |
|
5900 "MUL result.color, R0, R1.z;\n" |
|
5901 "END\n" |
|
5902 ; |
|
5903 |
|
5904 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_NOMASK = |
|
5905 "!!ARBfp1.0\n" |
|
5906 "PARAM c[4] = { program.local[0..3] };\n" |
|
5907 "TEMP R0;\n" |
|
5908 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5909 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5910 "ADD R0.xyz, R0, c[3];\n" |
|
5911 "RCP R0.z, R0.z;\n" |
|
5912 "MUL R0.xy, R0, R0.z;\n" |
|
5913 "MUL R0.xy, R0, c[0];\n" |
|
5914 "TEX result.color, R0, texture[0], 2D;\n" |
|
5915 "END\n" |
|
5916 ; |
|
5917 |
|
5918 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = |
|
5919 "!!ARBfp1.0\n" |
|
5920 "PARAM c[11] = { program.local[0..9],\n" |
|
5921 " { 1 } };\n" |
|
5922 "TEMP R0;\n" |
|
5923 "TEMP R1;\n" |
|
5924 "TEMP R2;\n" |
|
5925 "TEMP R3;\n" |
|
5926 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5927 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5928 "ADD R0.xyz, R0, c[3];\n" |
|
5929 "RCP R0.z, R0.z;\n" |
|
5930 "MUL R0.xy, R0, R0.z;\n" |
|
5931 "MUL R0.zw, R0.xyxy, c[0].xyxy;\n" |
|
5932 "TEX R1.x, R0.zwzw, texture[2], 2D;\n" |
|
5933 "MUL R0.xy, fragment.position, c[7];\n" |
|
5934 "TEX R0, R0, texture[0], 2D;\n" |
|
5935 "ADD R1.x, -R1, c[10];\n" |
|
5936 "MUL R1, fragment.color.primary, R1.x;\n" |
|
5937 "MUL R2.xyz, R0, c[4].y;\n" |
|
5938 "MUL R3.xyz, R1.w, R2;\n" |
|
5939 "MUL R2.xyz, R1, c[4].x;\n" |
|
5940 "MAD R2.xyz, R0.w, R2, R3;\n" |
|
5941 "ADD R3.xy, fragment.position, c[8];\n" |
|
5942 "ADD R2.w, -R0, c[10].x;\n" |
|
5943 "MUL R1.xyz, R1, c[5].y;\n" |
|
5944 "MAD R2.xyz, R2.w, R1, R2;\n" |
|
5945 "MUL R1.xyz, R0, c[5].z;\n" |
|
5946 "ADD R3.z, -R1.w, c[10].x;\n" |
|
5947 "MAD R2.xyz, R3.z, R1, R2;\n" |
|
5948 "MUL R1.y, R1.w, R2.w;\n" |
|
5949 "MUL R1.x, R1.w, R0.w;\n" |
|
5950 "MUL R1.z, R0.w, R3;\n" |
|
5951 "DP3 R2.w, R1, c[5];\n" |
|
5952 "MUL R3.xy, R3, c[6];\n" |
|
5953 "TEX R1, R3, texture[1], 2D;\n" |
|
5954 "ADD R2, R2, -R0;\n" |
|
5955 "DP4 R1.x, R1, c[9];\n" |
|
5956 "MAD result.color, R1.x, R2, R0;\n" |
|
5957 "END\n" |
|
5958 ; |
|
5959 |
|
5960 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY = |
|
5961 "!!ARBfp1.0\n" |
|
5962 "PARAM c[9] = { program.local[0..7],\n" |
|
5963 " { 1 } };\n" |
|
5964 "TEMP R0;\n" |
|
5965 "TEMP R1;\n" |
|
5966 "TEMP R2;\n" |
|
5967 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
5968 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
5969 "ADD R0.xyz, R0, c[3];\n" |
|
5970 "RCP R0.z, R0.z;\n" |
|
5971 "MUL R0.xy, R0, R0.z;\n" |
|
5972 "MUL R0.zw, R0.xyxy, c[0].xyxy;\n" |
|
5973 "TEX R1.x, R0.zwzw, texture[2], 2D;\n" |
|
5974 "MUL R0.xy, fragment.position, c[5];\n" |
|
5975 "TEX R0, R0, texture[0], 2D;\n" |
|
5976 "ADD R1.x, -R1, c[8];\n" |
|
5977 "MUL R1, fragment.color.primary, R1.x;\n" |
|
5978 "ADD R2.x, -R0.w, c[8];\n" |
|
5979 "MUL R2.xyz, R1, R2.x;\n" |
|
5980 "MAD R1.xyz, R1, R0, R2;\n" |
|
5981 "ADD R2.x, -R1.w, c[8];\n" |
|
5982 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
5983 "ADD R1.z, R1.w, R0.w;\n" |
|
5984 "MAD R2.w, -R1, R0, R1.z;\n" |
|
5985 "ADD R1.xy, fragment.position, c[6];\n" |
|
5986 "MUL R1.xy, R1, c[4];\n" |
|
5987 "TEX R1, R1, texture[1], 2D;\n" |
|
5988 "ADD R2, R2, -R0;\n" |
|
5989 "DP4 R1.x, R1, c[7];\n" |
|
5990 "MAD result.color, R1.x, R2, R0;\n" |
|
5991 "END\n" |
|
5992 ; |
|
5993 |
|
5994 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN = |
|
5995 "!!ARBfp1.0\n" |
|
5996 "PARAM c[9] = { program.local[0..7],\n" |
|
5997 " { 1 } };\n" |
|
5998 "TEMP R0;\n" |
|
5999 "TEMP R1;\n" |
|
6000 "TEMP R2;\n" |
|
6001 "TEMP R3;\n" |
|
6002 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6003 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6004 "ADD R0.xyz, R0, c[3];\n" |
|
6005 "RCP R0.z, R0.z;\n" |
|
6006 "MUL R0.xy, R0, R0.z;\n" |
|
6007 "MUL R0.xy, R0, c[0];\n" |
|
6008 "TEX R0.x, R0, texture[2], 2D;\n" |
|
6009 "ADD R0.z, -R0.x, c[8].x;\n" |
|
6010 "ADD R3.xy, fragment.position, c[6];\n" |
|
6011 "MUL R1, fragment.color.primary, R0.z;\n" |
|
6012 "MUL R0.xy, fragment.position, c[5];\n" |
|
6013 "TEX R0, R0, texture[0], 2D;\n" |
|
6014 "ADD R2, R1, R0;\n" |
|
6015 "MAD R2, -R1, R0, R2;\n" |
|
6016 "MUL R3.xy, R3, c[4];\n" |
|
6017 "TEX R1, R3, texture[1], 2D;\n" |
|
6018 "ADD R2, R2, -R0;\n" |
|
6019 "DP4 R1.x, R1, c[7];\n" |
|
6020 "MAD result.color, R1.x, R2, R0;\n" |
|
6021 "END\n" |
|
6022 ; |
|
6023 |
|
6024 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY = |
|
6025 "!!ARBfp1.0\n" |
|
6026 "PARAM c[9] = { program.local[0..7],\n" |
|
6027 " { 1, 2 } };\n" |
|
6028 "TEMP R0;\n" |
|
6029 "TEMP R1;\n" |
|
6030 "TEMP R2;\n" |
|
6031 "TEMP R3;\n" |
|
6032 "TEMP R4;\n" |
|
6033 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6034 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6035 "ADD R0.xyz, R0, c[3];\n" |
|
6036 "RCP R0.z, R0.z;\n" |
|
6037 "MUL R0.xy, R0, R0.z;\n" |
|
6038 "MUL R0.xy, R0, c[0];\n" |
|
6039 "TEX R0.x, R0, texture[2], 2D;\n" |
|
6040 "ADD R0.x, -R0, c[8];\n" |
|
6041 "MUL R1, fragment.color.primary, R0.x;\n" |
|
6042 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
6043 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6044 "ADD R2.w, -R0, c[8].x;\n" |
|
6045 "ADD R3.xyz, R1.w, -R1;\n" |
|
6046 "ADD R2.xyz, R0.w, -R0;\n" |
|
6047 "MUL R2.xyz, R2, R3;\n" |
|
6048 "MUL R2.xyz, R2, c[8].y;\n" |
|
6049 "MAD R2.xyz, R1.w, R0.w, -R2;\n" |
|
6050 "MUL R4.xyz, R1, R2.w;\n" |
|
6051 "MUL R3.xyz, R1, R0;\n" |
|
6052 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
6053 "ADD R2.x, -R1.w, c[8];\n" |
|
6054 "MAD R3.xyz, R3, c[8].y, R4;\n" |
|
6055 "MAD R3.xyz, R0, R2.x, R3;\n" |
|
6056 "MAD R1.xyz, R0, R2.x, R1;\n" |
|
6057 "MUL R2.xyz, R0, c[8].y;\n" |
|
6058 "ADD R1.xyz, R1, -R3;\n" |
|
6059 "SGE R2.xyz, R2, R0.w;\n" |
|
6060 "MAD R2.xyz, R2, R1, R3;\n" |
|
6061 "ADD R1.z, R1.w, R0.w;\n" |
|
6062 "MAD R2.w, -R1, R0, R1.z;\n" |
|
6063 "ADD R1.xy, fragment.position, c[6];\n" |
|
6064 "MUL R1.xy, R1, c[4];\n" |
|
6065 "TEX R1, R1, texture[1], 2D;\n" |
|
6066 "ADD R2, R2, -R0;\n" |
|
6067 "DP4 R1.x, R1, c[7];\n" |
|
6068 "MAD result.color, R1.x, R2, R0;\n" |
|
6069 "END\n" |
|
6070 ; |
|
6071 |
|
6072 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN = |
|
6073 "!!ARBfp1.0\n" |
|
6074 "PARAM c[9] = { program.local[0..7],\n" |
|
6075 " { 1 } };\n" |
|
6076 "TEMP R0;\n" |
|
6077 "TEMP R1;\n" |
|
6078 "TEMP R2;\n" |
|
6079 "TEMP R3;\n" |
|
6080 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6081 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6082 "ADD R0.xyz, R0, c[3];\n" |
|
6083 "RCP R0.z, R0.z;\n" |
|
6084 "MUL R0.xy, R0, R0.z;\n" |
|
6085 "MUL R0.xy, R0, c[0];\n" |
|
6086 "TEX R1.x, R0, texture[2], 2D;\n" |
|
6087 "MUL R0.xy, fragment.position, c[5];\n" |
|
6088 "TEX R0, R0, texture[0], 2D;\n" |
|
6089 "ADD R1.x, -R1, c[8];\n" |
|
6090 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6091 "MUL R3.xyz, R1.w, R0;\n" |
|
6092 "MUL R2.xyz, R1, R0.w;\n" |
|
6093 "MIN R2.xyz, R2, R3;\n" |
|
6094 "ADD R2.w, -R0, c[8].x;\n" |
|
6095 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
6096 "ADD R2.x, -R1.w, c[8];\n" |
|
6097 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
6098 "ADD R1.z, R1.w, R0.w;\n" |
|
6099 "MAD R2.w, -R1, R0, R1.z;\n" |
|
6100 "ADD R1.xy, fragment.position, c[6];\n" |
|
6101 "MUL R1.xy, R1, c[4];\n" |
|
6102 "TEX R1, R1, texture[1], 2D;\n" |
|
6103 "ADD R2, R2, -R0;\n" |
|
6104 "DP4 R1.x, R1, c[7];\n" |
|
6105 "MAD result.color, R1.x, R2, R0;\n" |
|
6106 "END\n" |
|
6107 ; |
|
6108 |
|
6109 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN = |
|
6110 "!!ARBfp1.0\n" |
|
6111 "PARAM c[9] = { program.local[0..7],\n" |
|
6112 " { 1 } };\n" |
|
6113 "TEMP R0;\n" |
|
6114 "TEMP R1;\n" |
|
6115 "TEMP R2;\n" |
|
6116 "TEMP R3;\n" |
|
6117 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6118 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6119 "ADD R0.xyz, R0, c[3];\n" |
|
6120 "RCP R0.z, R0.z;\n" |
|
6121 "MUL R0.xy, R0, R0.z;\n" |
|
6122 "MUL R0.xy, R0, c[0];\n" |
|
6123 "TEX R1.x, R0, texture[2], 2D;\n" |
|
6124 "MUL R0.xy, fragment.position, c[5];\n" |
|
6125 "TEX R0, R0, texture[0], 2D;\n" |
|
6126 "ADD R1.x, -R1, c[8];\n" |
|
6127 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6128 "MUL R3.xyz, R1.w, R0;\n" |
|
6129 "MUL R2.xyz, R1, R0.w;\n" |
|
6130 "MAX R2.xyz, R2, R3;\n" |
|
6131 "ADD R2.w, -R0, c[8].x;\n" |
|
6132 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
6133 "ADD R2.x, -R1.w, c[8];\n" |
|
6134 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
6135 "ADD R1.z, R1.w, R0.w;\n" |
|
6136 "MAD R2.w, -R1, R0, R1.z;\n" |
|
6137 "ADD R1.xy, fragment.position, c[6];\n" |
|
6138 "MUL R1.xy, R1, c[4];\n" |
|
6139 "TEX R1, R1, texture[1], 2D;\n" |
|
6140 "ADD R2, R2, -R0;\n" |
|
6141 "DP4 R1.x, R1, c[7];\n" |
|
6142 "MAD result.color, R1.x, R2, R0;\n" |
|
6143 "END\n" |
|
6144 ; |
|
6145 |
|
6146 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE = |
|
6147 "!!ARBfp1.0\n" |
|
6148 "PARAM c[9] = { program.local[0..7],\n" |
|
6149 " { 1, 1e-006 } };\n" |
|
6150 "TEMP R0;\n" |
|
6151 "TEMP R1;\n" |
|
6152 "TEMP R2;\n" |
|
6153 "TEMP R3;\n" |
|
6154 "TEMP R4;\n" |
|
6155 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6156 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6157 "ADD R0.xyz, R0, c[3];\n" |
|
6158 "RCP R0.z, R0.z;\n" |
|
6159 "MUL R0.xy, R0, R0.z;\n" |
|
6160 "MUL R0.xy, R0, c[0];\n" |
|
6161 "TEX R0.x, R0, texture[2], 2D;\n" |
|
6162 "ADD R0.x, -R0, c[8];\n" |
|
6163 "MUL R1, fragment.color.primary, R0.x;\n" |
|
6164 "MAX R0.x, R1.w, c[8].y;\n" |
|
6165 "RCP R0.x, R0.x;\n" |
|
6166 "MAD R2.xyz, -R1, R0.x, c[8].x;\n" |
|
6167 "MAX R2.xyz, R2, c[8].y;\n" |
|
6168 "MUL R0.xy, fragment.position, c[5];\n" |
|
6169 "TEX R0, R0, texture[0], 2D;\n" |
|
6170 "ADD R2.w, -R1, c[8].x;\n" |
|
6171 "MUL R3.xyz, R0, R2.w;\n" |
|
6172 "ADD R2.w, -R0, c[8].x;\n" |
|
6173 "MAD R4.xyz, R1, R2.w, R3;\n" |
|
6174 "MUL R3.xyz, R1.w, R0;\n" |
|
6175 "MUL R2.w, R1, R0;\n" |
|
6176 "MAD R1.xyz, R1, R0.w, R3;\n" |
|
6177 "SGE R1.xyz, R1, R2.w;\n" |
|
6178 "RCP R2.x, R2.x;\n" |
|
6179 "RCP R2.y, R2.y;\n" |
|
6180 "RCP R2.z, R2.z;\n" |
|
6181 "MAD R2.xyz, R3, R2, R4;\n" |
|
6182 "MAD R4.xyz, R1.w, R0.w, R4;\n" |
|
6183 "ADD R4.xyz, R4, -R2;\n" |
|
6184 "MAD R2.xyz, R1, R4, R2;\n" |
|
6185 "ADD R1.z, R1.w, R0.w;\n" |
|
6186 "MAD R2.w, -R1, R0, R1.z;\n" |
|
6187 "ADD R1.xy, fragment.position, c[6];\n" |
|
6188 "MUL R1.xy, R1, c[4];\n" |
|
6189 "TEX R1, R1, texture[1], 2D;\n" |
|
6190 "ADD R2, R2, -R0;\n" |
|
6191 "DP4 R1.x, R1, c[7];\n" |
|
6192 "MAD result.color, R1.x, R2, R0;\n" |
|
6193 "END\n" |
|
6194 ; |
|
6195 |
|
6196 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN = |
|
6197 "!!ARBfp1.0\n" |
|
6198 "PARAM c[9] = { program.local[0..7],\n" |
|
6199 " { 1, 9.9999997e-006 } };\n" |
|
6200 "TEMP R0;\n" |
|
6201 "TEMP R1;\n" |
|
6202 "TEMP R2;\n" |
|
6203 "TEMP R3;\n" |
|
6204 "TEMP R4;\n" |
|
6205 "TEMP R5;\n" |
|
6206 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6207 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6208 "ADD R0.xyz, R0, c[3];\n" |
|
6209 "RCP R0.z, R0.z;\n" |
|
6210 "MUL R0.xy, R0, R0.z;\n" |
|
6211 "MUL R0.xy, R0, c[0];\n" |
|
6212 "TEX R0.x, R0, texture[2], 2D;\n" |
|
6213 "ADD R1.x, -R0, c[8];\n" |
|
6214 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6215 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
6216 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6217 "MUL R2.xyz, R1.w, R0;\n" |
|
6218 "MAD R3.xyz, R1, R0.w, R2;\n" |
|
6219 "MAD R2.xyz, -R1.w, R0.w, R3;\n" |
|
6220 "MUL R4.xyz, R1.w, R2;\n" |
|
6221 "MAX R2.xyz, R1, c[8].y;\n" |
|
6222 "ADD R2.w, -R0, c[8].x;\n" |
|
6223 "MUL R5.xyz, R1, R2.w;\n" |
|
6224 "ADD R3.w, -R1, c[8].x;\n" |
|
6225 "RCP R2.x, R2.x;\n" |
|
6226 "RCP R2.y, R2.y;\n" |
|
6227 "RCP R2.z, R2.z;\n" |
|
6228 "MAD R2.xyz, R4, R2, R5;\n" |
|
6229 "MUL R4.xyz, R0, R3.w;\n" |
|
6230 "MAD R1.xyz, R1, R2.w, R4;\n" |
|
6231 "MUL R2.w, R1, R0;\n" |
|
6232 "MAD R2.xyz, R0, R3.w, R2;\n" |
|
6233 "ADD R2.xyz, R2, -R1;\n" |
|
6234 "SGE R3.xyz, R3, R2.w;\n" |
|
6235 "MAD R2.xyz, R3, R2, R1;\n" |
|
6236 "ADD R1.z, R1.w, R0.w;\n" |
|
6237 "MAD R2.w, -R1, R0, R1.z;\n" |
|
6238 "ADD R1.xy, fragment.position, c[6];\n" |
|
6239 "MUL R1.xy, R1, c[4];\n" |
|
6240 "TEX R1, R1, texture[1], 2D;\n" |
|
6241 "ADD R2, R2, -R0;\n" |
|
6242 "DP4 R1.x, R1, c[7];\n" |
|
6243 "MAD result.color, R1.x, R2, R0;\n" |
|
6244 "END\n" |
|
6245 ; |
|
6246 |
|
6247 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT = |
|
6248 "!!ARBfp1.0\n" |
|
6249 "PARAM c[9] = { program.local[0..7],\n" |
|
6250 " { 1, 2 } };\n" |
|
6251 "TEMP R0;\n" |
|
6252 "TEMP R1;\n" |
|
6253 "TEMP R2;\n" |
|
6254 "TEMP R3;\n" |
|
6255 "TEMP R4;\n" |
|
6256 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6257 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6258 "ADD R0.xyz, R0, c[3];\n" |
|
6259 "RCP R0.z, R0.z;\n" |
|
6260 "MUL R0.xy, R0, R0.z;\n" |
|
6261 "MUL R0.xy, R0, c[0];\n" |
|
6262 "TEX R0.x, R0, texture[2], 2D;\n" |
|
6263 "ADD R0.x, -R0, c[8];\n" |
|
6264 "MUL R1, fragment.color.primary, R0.x;\n" |
|
6265 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" |
|
6266 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6267 "ADD R2.w, -R0, c[8].x;\n" |
|
6268 "ADD R3.xyz, R1.w, -R1;\n" |
|
6269 "ADD R2.xyz, R0.w, -R0;\n" |
|
6270 "MUL R2.xyz, R2, R3;\n" |
|
6271 "MUL R2.xyz, R2, c[8].y;\n" |
|
6272 "MAD R2.xyz, R1.w, R0.w, -R2;\n" |
|
6273 "MUL R4.xyz, R1, R2.w;\n" |
|
6274 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
6275 "MUL R3.xyz, R1, R0;\n" |
|
6276 "ADD R2.w, -R1, c[8].x;\n" |
|
6277 "MAD R3.xyz, R3, c[8].y, R4;\n" |
|
6278 "MUL R1.xyz, R1, c[8].y;\n" |
|
6279 "SGE R1.xyz, R1, R1.w;\n" |
|
6280 "MAD R3.xyz, R0, R2.w, R3;\n" |
|
6281 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
6282 "ADD R2.xyz, R2, -R3;\n" |
|
6283 "MAD R2.xyz, R1, R2, R3;\n" |
|
6284 "ADD R1.z, R1.w, R0.w;\n" |
|
6285 "MAD R2.w, -R1, R0, R1.z;\n" |
|
6286 "ADD R1.xy, fragment.position, c[6];\n" |
|
6287 "MUL R1.xy, R1, c[4];\n" |
|
6288 "TEX R1, R1, texture[1], 2D;\n" |
|
6289 "ADD R2, R2, -R0;\n" |
|
6290 "DP4 R1.x, R1, c[7];\n" |
|
6291 "MAD result.color, R1.x, R2, R0;\n" |
|
6292 "END\n" |
|
6293 ; |
|
6294 |
|
6295 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT = |
|
6296 "!!ARBfp1.0\n" |
|
6297 "PARAM c[10] = { program.local[0..7],\n" |
|
6298 " { 1, 2, 9.9999997e-006, 8 },\n" |
|
6299 " { 3 } };\n" |
|
6300 "TEMP R0;\n" |
|
6301 "TEMP R1;\n" |
|
6302 "TEMP R2;\n" |
|
6303 "TEMP R3;\n" |
|
6304 "TEMP R4;\n" |
|
6305 "TEMP R5;\n" |
|
6306 "TEMP R6;\n" |
|
6307 "MUL R0.xy, fragment.position, c[5];\n" |
|
6308 "TEX R0, R0, texture[0], 2D;\n" |
|
6309 "MAX R1.w, R0, c[8].z;\n" |
|
6310 "RCP R2.w, R1.w;\n" |
|
6311 "MUL R2.xyz, R0, R2.w;\n" |
|
6312 "RSQ R1.w, R2.x;\n" |
|
6313 "MUL R5.xyz, -R2, c[8].w;\n" |
|
6314 "MUL R1.xyz, fragment.position.y, c[2];\n" |
|
6315 "MAD R1.xyz, fragment.position.x, c[1], R1;\n" |
|
6316 "ADD R1.xyz, R1, c[3];\n" |
|
6317 "RCP R1.z, R1.z;\n" |
|
6318 "MUL R1.xy, R1, R1.z;\n" |
|
6319 "MUL R1.xy, R1, c[0];\n" |
|
6320 "TEX R1.x, R1, texture[2], 2D;\n" |
|
6321 "RSQ R1.z, R2.y;\n" |
|
6322 "RSQ R1.y, R2.z;\n" |
|
6323 "MAD R2.xyz, -R0, R2.w, c[8].x;\n" |
|
6324 "RCP R3.x, R1.w;\n" |
|
6325 "RCP R3.y, R1.z;\n" |
|
6326 "RCP R3.z, R1.y;\n" |
|
6327 "ADD R1.x, -R1, c[8];\n" |
|
6328 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6329 "MAD R4.xyz, R0.w, R3, -R0;\n" |
|
6330 "MAD R3.xyz, R1, c[8].y, -R1.w;\n" |
|
6331 "MUL R4.xyz, R3, R4;\n" |
|
6332 "ADD R6.xyz, R5, c[9].x;\n" |
|
6333 "MUL R5.xyz, R2, R3;\n" |
|
6334 "MAD R2.xyz, -R2, R3, R1.w;\n" |
|
6335 "MUL R3.xyz, R1, c[8].y;\n" |
|
6336 "MAD R6.xyz, -R5, R6, R1.w;\n" |
|
6337 "MAD R4.xyz, R1.w, R0, R4;\n" |
|
6338 "MAD R5.xyz, -R0, R6, R4;\n" |
|
6339 "MUL R4.xyz, R0, c[8].w;\n" |
|
6340 "SGE R3.xyz, R3, R1.w;\n" |
|
6341 "ADD R2.w, -R0, c[8].x;\n" |
|
6342 "MUL R6.xyz, R0, R6;\n" |
|
6343 "SGE R4.xyz, R4, R0.w;\n" |
|
6344 "MAD R4.xyz, R4, R5, R6;\n" |
|
6345 "MAD R4.xyz, -R0, R2, R4;\n" |
|
6346 "MUL R2.xyz, R0, R2;\n" |
|
6347 "MAD R2.xyz, R3, R4, R2;\n" |
|
6348 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
6349 "ADD R1.x, -R1.w, c[8];\n" |
|
6350 "MAD R2.xyz, R0, R1.x, R2;\n" |
|
6351 "ADD R1.z, R1.w, R0.w;\n" |
|
6352 "MAD R2.w, -R1, R0, R1.z;\n" |
|
6353 "ADD R1.xy, fragment.position, c[6];\n" |
|
6354 "MUL R1.xy, R1, c[4];\n" |
|
6355 "TEX R1, R1, texture[1], 2D;\n" |
|
6356 "ADD R2, R2, -R0;\n" |
|
6357 "DP4 R1.x, R1, c[7];\n" |
|
6358 "MAD result.color, R1.x, R2, R0;\n" |
|
6359 "END\n" |
|
6360 ; |
|
6361 |
|
6362 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE = |
|
6363 "!!ARBfp1.0\n" |
|
6364 "PARAM c[9] = { program.local[0..7],\n" |
|
6365 " { 1, 2 } };\n" |
|
6366 "TEMP R0;\n" |
|
6367 "TEMP R1;\n" |
|
6368 "TEMP R2;\n" |
|
6369 "TEMP R3;\n" |
|
6370 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6371 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6372 "ADD R0.xyz, R0, c[3];\n" |
|
6373 "RCP R0.z, R0.z;\n" |
|
6374 "MUL R0.xy, R0, R0.z;\n" |
|
6375 "MUL R0.xy, R0, c[0];\n" |
|
6376 "TEX R1.x, R0, texture[2], 2D;\n" |
|
6377 "MUL R0.xy, fragment.position, c[5];\n" |
|
6378 "ADD R1.x, -R1, c[8];\n" |
|
6379 "TEX R0, R0, texture[0], 2D;\n" |
|
6380 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6381 "ADD R2.xyz, R1, R0;\n" |
|
6382 "MUL R3.xyz, R1.w, R0;\n" |
|
6383 "MUL R1.xyz, R1, R0.w;\n" |
|
6384 "MIN R1.xyz, R1, R3;\n" |
|
6385 "MAD R2.xyz, -R1, c[8].y, R2;\n" |
|
6386 "ADD R1.z, R1.w, R0.w;\n" |
|
6387 "MAD R2.w, -R1, R0, R1.z;\n" |
|
6388 "ADD R1.xy, fragment.position, c[6];\n" |
|
6389 "MUL R1.xy, R1, c[4];\n" |
|
6390 "TEX R1, R1, texture[1], 2D;\n" |
|
6391 "ADD R2, R2, -R0;\n" |
|
6392 "DP4 R1.x, R1, c[7];\n" |
|
6393 "MAD result.color, R1.x, R2, R0;\n" |
|
6394 "END\n" |
|
6395 ; |
|
6396 |
|
6397 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION = |
|
6398 "!!ARBfp1.0\n" |
|
6399 "PARAM c[9] = { program.local[0..7],\n" |
|
6400 " { 1, 2 } };\n" |
|
6401 "TEMP R0;\n" |
|
6402 "TEMP R1;\n" |
|
6403 "TEMP R2;\n" |
|
6404 "TEMP R3;\n" |
|
6405 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6406 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6407 "ADD R0.xyz, R0, c[3];\n" |
|
6408 "RCP R0.z, R0.z;\n" |
|
6409 "MUL R0.xy, R0, R0.z;\n" |
|
6410 "MUL R0.xy, R0, c[0];\n" |
|
6411 "TEX R1.x, R0, texture[2], 2D;\n" |
|
6412 "MUL R0.xy, fragment.position, c[5];\n" |
|
6413 "TEX R0, R0, texture[0], 2D;\n" |
|
6414 "ADD R1.x, -R1, c[8];\n" |
|
6415 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6416 "MUL R2.xyz, R1.w, R0;\n" |
|
6417 "MAD R3.xyz, R1, R0.w, R2;\n" |
|
6418 "MUL R2.xyz, R1, R0;\n" |
|
6419 "MAD R2.xyz, -R2, c[8].y, R3;\n" |
|
6420 "ADD R2.w, -R0, c[8].x;\n" |
|
6421 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
6422 "ADD R2.x, -R1.w, c[8];\n" |
|
6423 "MAD R2.xyz, R0, R2.x, R1;\n" |
|
6424 "ADD R1.z, R1.w, R0.w;\n" |
|
6425 "MAD R2.w, -R1, R0, R1.z;\n" |
|
6426 "ADD R1.xy, fragment.position, c[6];\n" |
|
6427 "MUL R1.xy, R1, c[4];\n" |
|
6428 "TEX R1, R1, texture[1], 2D;\n" |
|
6429 "ADD R2, R2, -R0;\n" |
|
6430 "DP4 R1.x, R1, c[7];\n" |
|
6431 "MAD result.color, R1.x, R2, R0;\n" |
|
6432 "END\n" |
|
6433 ; |
|
6434 |
|
6435 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = |
|
6436 "!!ARBfp1.0\n" |
|
6437 "PARAM c[8] = { program.local[0..6],\n" |
|
6438 " { 1 } };\n" |
|
6439 "TEMP R0;\n" |
|
6440 "TEMP R1;\n" |
|
6441 "TEMP R2;\n" |
|
6442 "TEMP R3;\n" |
|
6443 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6444 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6445 "ADD R0.xyz, R0, c[3];\n" |
|
6446 "RCP R0.z, R0.z;\n" |
|
6447 "MUL R0.xy, R0, R0.z;\n" |
|
6448 "MUL R0.xy, R0, c[0];\n" |
|
6449 "TEX R1.x, R0, texture[1], 2D;\n" |
|
6450 "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n" |
|
6451 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6452 "MUL R2.xyz, R0, c[4].y;\n" |
|
6453 "ADD R1.x, -R1, c[7];\n" |
|
6454 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6455 "MUL R3.xyz, R1.w, R2;\n" |
|
6456 "MUL R2.xyz, R1, c[4].x;\n" |
|
6457 "MUL R0.xyz, R0, c[5].z;\n" |
|
6458 "MAD R2.xyz, R0.w, R2, R3;\n" |
|
6459 "ADD R2.w, -R0, c[7].x;\n" |
|
6460 "MUL R1.xyz, R1, c[5].y;\n" |
|
6461 "MAD R1.xyz, R2.w, R1, R2;\n" |
|
6462 "ADD R2.x, -R1.w, c[7];\n" |
|
6463 "MAD result.color.xyz, R2.x, R0, R1;\n" |
|
6464 "MUL R0.x, R1.w, R0.w;\n" |
|
6465 "MUL R0.z, R0.w, R2.x;\n" |
|
6466 "MUL R0.y, R1.w, R2.w;\n" |
|
6467 "DP3 result.color.w, R0, c[5];\n" |
|
6468 "END\n" |
|
6469 ; |
|
6470 |
|
6471 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY_NOMASK = |
|
6472 "!!ARBfp1.0\n" |
|
6473 "PARAM c[6] = { program.local[0..4],\n" |
|
6474 " { 1 } };\n" |
|
6475 "TEMP R0;\n" |
|
6476 "TEMP R1;\n" |
|
6477 "TEMP R2;\n" |
|
6478 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6479 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6480 "ADD R0.xyz, R0, c[3];\n" |
|
6481 "RCP R0.z, R0.z;\n" |
|
6482 "MUL R0.xy, R0, R0.z;\n" |
|
6483 "MUL R0.xy, R0, c[0];\n" |
|
6484 "TEX R1.x, R0, texture[1], 2D;\n" |
|
6485 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
6486 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6487 "ADD R1.x, -R1, c[5];\n" |
|
6488 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6489 "ADD R2.x, -R0.w, c[5];\n" |
|
6490 "MUL R2.xyz, R1, R2.x;\n" |
|
6491 "MAD R1.xyz, R1, R0, R2;\n" |
|
6492 "ADD R2.x, R1.w, R0.w;\n" |
|
6493 "ADD R2.y, -R1.w, c[5].x;\n" |
|
6494 "MAD result.color.xyz, R0, R2.y, R1;\n" |
|
6495 "MAD result.color.w, -R1, R0, R2.x;\n" |
|
6496 "END\n" |
|
6497 ; |
|
6498 |
|
6499 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN_NOMASK = |
|
6500 "!!ARBfp1.0\n" |
|
6501 "PARAM c[6] = { program.local[0..4],\n" |
|
6502 " { 1 } };\n" |
|
6503 "TEMP R0;\n" |
|
6504 "TEMP R1;\n" |
|
6505 "TEMP R2;\n" |
|
6506 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6507 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6508 "ADD R0.xyz, R0, c[3];\n" |
|
6509 "RCP R0.z, R0.z;\n" |
|
6510 "MUL R0.xy, R0, R0.z;\n" |
|
6511 "MUL R0.xy, R0, c[0];\n" |
|
6512 "TEX R0.x, R0, texture[1], 2D;\n" |
|
6513 "ADD R1.x, -R0, c[5];\n" |
|
6514 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
6515 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6516 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6517 "ADD R2, R1, R0;\n" |
|
6518 "MAD result.color, -R1, R0, R2;\n" |
|
6519 "END\n" |
|
6520 ; |
|
6521 |
|
6522 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY_NOMASK = |
|
6523 "!!ARBfp1.0\n" |
|
6524 "PARAM c[6] = { program.local[0..4],\n" |
|
6525 " { 1, 2 } };\n" |
|
6526 "TEMP R0;\n" |
|
6527 "TEMP R1;\n" |
|
6528 "TEMP R2;\n" |
|
6529 "TEMP R3;\n" |
|
6530 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6531 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6532 "ADD R0.xyz, R0, c[3];\n" |
|
6533 "RCP R0.z, R0.z;\n" |
|
6534 "MUL R0.xy, R0, R0.z;\n" |
|
6535 "MUL R0.xy, R0, c[0];\n" |
|
6536 "TEX R0.x, R0, texture[1], 2D;\n" |
|
6537 "ADD R0.x, -R0, c[5];\n" |
|
6538 "MUL R1, fragment.color.primary, R0.x;\n" |
|
6539 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
6540 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6541 "ADD R3.xyz, R1.w, -R1;\n" |
|
6542 "ADD R2.xyz, R0.w, -R0;\n" |
|
6543 "MUL R2.xyz, R2, R3;\n" |
|
6544 "ADD R2.w, -R0, c[5].x;\n" |
|
6545 "MUL R2.xyz, R2, c[5].y;\n" |
|
6546 "MAD R2.xyz, R1.w, R0.w, -R2;\n" |
|
6547 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
6548 "MUL R3.xyz, R1, R2.w;\n" |
|
6549 "MUL R1.xyz, R1, R0;\n" |
|
6550 "ADD R2.w, -R1, c[5].x;\n" |
|
6551 "MAD R1.xyz, R1, c[5].y, R3;\n" |
|
6552 "MAD R1.xyz, R0, R2.w, R1;\n" |
|
6553 "MAD R2.xyz, R0, R2.w, R2;\n" |
|
6554 "MUL R0.xyz, R0, c[5].y;\n" |
|
6555 "ADD R2.w, R1, R0;\n" |
|
6556 "ADD R2.xyz, R2, -R1;\n" |
|
6557 "SGE R0.xyz, R0, R0.w;\n" |
|
6558 "MAD result.color.xyz, R0, R2, R1;\n" |
|
6559 "MAD result.color.w, -R1, R0, R2;\n" |
|
6560 "END\n" |
|
6561 ; |
|
6562 |
|
6563 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN_NOMASK = |
|
6564 "!!ARBfp1.0\n" |
|
6565 "PARAM c[6] = { program.local[0..4],\n" |
|
6566 " { 1 } };\n" |
|
6567 "TEMP R0;\n" |
|
6568 "TEMP R1;\n" |
|
6569 "TEMP R2;\n" |
|
6570 "TEMP R3;\n" |
|
6571 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6572 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6573 "ADD R0.xyz, R0, c[3];\n" |
|
6574 "RCP R0.z, R0.z;\n" |
|
6575 "MUL R0.xy, R0, R0.z;\n" |
|
6576 "MUL R0.xy, R0, c[0];\n" |
|
6577 "TEX R0.x, R0, texture[1], 2D;\n" |
|
6578 "ADD R1.x, -R0, c[5];\n" |
|
6579 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
6580 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6581 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6582 "MUL R2.xyz, R1, R0.w;\n" |
|
6583 "MUL R3.xyz, R1.w, R0;\n" |
|
6584 "MIN R2.xyz, R2, R3;\n" |
|
6585 "ADD R2.w, -R0, c[5].x;\n" |
|
6586 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
6587 "ADD R2.x, R1.w, R0.w;\n" |
|
6588 "ADD R2.y, -R1.w, c[5].x;\n" |
|
6589 "MAD result.color.xyz, R0, R2.y, R1;\n" |
|
6590 "MAD result.color.w, -R1, R0, R2.x;\n" |
|
6591 "END\n" |
|
6592 ; |
|
6593 |
|
6594 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN_NOMASK = |
|
6595 "!!ARBfp1.0\n" |
|
6596 "PARAM c[6] = { program.local[0..4],\n" |
|
6597 " { 1 } };\n" |
|
6598 "TEMP R0;\n" |
|
6599 "TEMP R1;\n" |
|
6600 "TEMP R2;\n" |
|
6601 "TEMP R3;\n" |
|
6602 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6603 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6604 "ADD R0.xyz, R0, c[3];\n" |
|
6605 "RCP R0.z, R0.z;\n" |
|
6606 "MUL R0.xy, R0, R0.z;\n" |
|
6607 "MUL R0.xy, R0, c[0];\n" |
|
6608 "TEX R0.x, R0, texture[1], 2D;\n" |
|
6609 "ADD R1.x, -R0, c[5];\n" |
|
6610 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
6611 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6612 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6613 "MUL R2.xyz, R1, R0.w;\n" |
|
6614 "MUL R3.xyz, R1.w, R0;\n" |
|
6615 "MAX R2.xyz, R2, R3;\n" |
|
6616 "ADD R2.w, -R0, c[5].x;\n" |
|
6617 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
6618 "ADD R2.x, R1.w, R0.w;\n" |
|
6619 "ADD R2.y, -R1.w, c[5].x;\n" |
|
6620 "MAD result.color.xyz, R0, R2.y, R1;\n" |
|
6621 "MAD result.color.w, -R1, R0, R2.x;\n" |
|
6622 "END\n" |
|
6623 ; |
|
6624 |
|
6625 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE_NOMASK = |
|
6626 "!!ARBfp1.0\n" |
|
6627 "PARAM c[6] = { program.local[0..4],\n" |
|
6628 " { 1, 1e-006 } };\n" |
|
6629 "TEMP R0;\n" |
|
6630 "TEMP R1;\n" |
|
6631 "TEMP R2;\n" |
|
6632 "TEMP R3;\n" |
|
6633 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6634 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6635 "ADD R0.xyz, R0, c[3];\n" |
|
6636 "RCP R0.z, R0.z;\n" |
|
6637 "MUL R0.xy, R0, R0.z;\n" |
|
6638 "MUL R0.xy, R0, c[0];\n" |
|
6639 "TEX R0.x, R0, texture[1], 2D;\n" |
|
6640 "ADD R0.x, -R0, c[5];\n" |
|
6641 "MUL R1, fragment.color.primary, R0.x;\n" |
|
6642 "MAX R0.x, R1.w, c[5].y;\n" |
|
6643 "RCP R0.x, R0.x;\n" |
|
6644 "MAD R3.xyz, -R1, R0.x, c[5].x;\n" |
|
6645 "MAX R3.xyz, R3, c[5].y;\n" |
|
6646 "MUL R0.xy, fragment.position, c[4];\n" |
|
6647 "TEX R0, R0, texture[0], 2D;\n" |
|
6648 "ADD R2.x, -R1.w, c[5];\n" |
|
6649 "MUL R2.xyz, R0, R2.x;\n" |
|
6650 "ADD R2.w, -R0, c[5].x;\n" |
|
6651 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
6652 "MUL R0.xyz, R1.w, R0;\n" |
|
6653 "RCP R3.x, R3.x;\n" |
|
6654 "RCP R3.y, R3.y;\n" |
|
6655 "RCP R3.z, R3.z;\n" |
|
6656 "MAD R3.xyz, R0, R3, R2;\n" |
|
6657 "MAD R0.xyz, R1, R0.w, R0;\n" |
|
6658 "MAD R2.xyz, R1.w, R0.w, R2;\n" |
|
6659 "MUL R2.w, R1, R0;\n" |
|
6660 "ADD R1.x, R1.w, R0.w;\n" |
|
6661 "ADD R2.xyz, R2, -R3;\n" |
|
6662 "SGE R0.xyz, R0, R2.w;\n" |
|
6663 "MAD result.color.xyz, R0, R2, R3;\n" |
|
6664 "MAD result.color.w, -R1, R0, R1.x;\n" |
|
6665 "END\n" |
|
6666 ; |
|
6667 |
|
6668 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN_NOMASK = |
|
6669 "!!ARBfp1.0\n" |
|
6670 "PARAM c[6] = { program.local[0..4],\n" |
|
6671 " { 1, 9.9999997e-006 } };\n" |
|
6672 "TEMP R0;\n" |
|
6673 "TEMP R1;\n" |
|
6674 "TEMP R2;\n" |
|
6675 "TEMP R3;\n" |
|
6676 "TEMP R4;\n" |
|
6677 "TEMP R5;\n" |
|
6678 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6679 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6680 "ADD R0.xyz, R0, c[3];\n" |
|
6681 "RCP R0.z, R0.z;\n" |
|
6682 "MUL R0.xy, R0, R0.z;\n" |
|
6683 "MUL R0.xy, R0, c[0];\n" |
|
6684 "TEX R0.x, R0, texture[1], 2D;\n" |
|
6685 "ADD R1.x, -R0, c[5];\n" |
|
6686 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6687 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
6688 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6689 "MUL R2.xyz, R1.w, R0;\n" |
|
6690 "MAD R3.xyz, R1, R0.w, R2;\n" |
|
6691 "ADD R2.w, -R0, c[5].x;\n" |
|
6692 "MAD R2.xyz, -R1.w, R0.w, R3;\n" |
|
6693 "MUL R4.xyz, R1.w, R2;\n" |
|
6694 "MAX R2.xyz, R1, c[5].y;\n" |
|
6695 "MUL R5.xyz, R1, R2.w;\n" |
|
6696 "ADD R3.w, -R1, c[5].x;\n" |
|
6697 "RCP R2.x, R2.x;\n" |
|
6698 "RCP R2.y, R2.y;\n" |
|
6699 "RCP R2.z, R2.z;\n" |
|
6700 "MAD R2.xyz, R4, R2, R5;\n" |
|
6701 "MUL R4.xyz, R0, R3.w;\n" |
|
6702 "MAD R0.xyz, R0, R3.w, R2;\n" |
|
6703 "MAD R1.xyz, R1, R2.w, R4;\n" |
|
6704 "MUL R2.x, R1.w, R0.w;\n" |
|
6705 "ADD R2.w, R1, R0;\n" |
|
6706 "ADD R0.xyz, R0, -R1;\n" |
|
6707 "SGE R2.xyz, R3, R2.x;\n" |
|
6708 "MAD result.color.xyz, R2, R0, R1;\n" |
|
6709 "MAD result.color.w, -R1, R0, R2;\n" |
|
6710 "END\n" |
|
6711 ; |
|
6712 |
|
6713 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT_NOMASK = |
|
6714 "!!ARBfp1.0\n" |
|
6715 "PARAM c[6] = { program.local[0..4],\n" |
|
6716 " { 1, 2 } };\n" |
|
6717 "TEMP R0;\n" |
|
6718 "TEMP R1;\n" |
|
6719 "TEMP R2;\n" |
|
6720 "TEMP R3;\n" |
|
6721 "TEMP R4;\n" |
|
6722 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6723 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6724 "ADD R0.xyz, R0, c[3];\n" |
|
6725 "RCP R0.z, R0.z;\n" |
|
6726 "MUL R0.xy, R0, R0.z;\n" |
|
6727 "MUL R0.xy, R0, c[0];\n" |
|
6728 "TEX R0.x, R0, texture[1], 2D;\n" |
|
6729 "ADD R0.x, -R0, c[5];\n" |
|
6730 "MUL R1, fragment.color.primary, R0.x;\n" |
|
6731 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
6732 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6733 "ADD R2.w, -R0, c[5].x;\n" |
|
6734 "ADD R3.xyz, R1.w, -R1;\n" |
|
6735 "ADD R2.xyz, R0.w, -R0;\n" |
|
6736 "MUL R2.xyz, R2, R3;\n" |
|
6737 "MUL R2.xyz, R2, c[5].y;\n" |
|
6738 "MAD R2.xyz, R1.w, R0.w, -R2;\n" |
|
6739 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
6740 "MUL R4.xyz, R1, R2.w;\n" |
|
6741 "MUL R3.xyz, R1, R0;\n" |
|
6742 "MUL R1.xyz, R1, c[5].y;\n" |
|
6743 "ADD R2.w, -R1, c[5].x;\n" |
|
6744 "MAD R3.xyz, R3, c[5].y, R4;\n" |
|
6745 "MAD R3.xyz, R0, R2.w, R3;\n" |
|
6746 "MAD R0.xyz, R0, R2.w, R2;\n" |
|
6747 "ADD R2.x, R1.w, R0.w;\n" |
|
6748 "ADD R0.xyz, R0, -R3;\n" |
|
6749 "SGE R1.xyz, R1, R1.w;\n" |
|
6750 "MAD result.color.xyz, R1, R0, R3;\n" |
|
6751 "MAD result.color.w, -R1, R0, R2.x;\n" |
|
6752 "END\n" |
|
6753 ; |
|
6754 |
|
6755 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT_NOMASK = |
|
6756 "!!ARBfp1.0\n" |
|
6757 "PARAM c[7] = { program.local[0..4],\n" |
|
6758 " { 1, 2, 9.9999997e-006, 8 },\n" |
|
6759 " { 3 } };\n" |
|
6760 "TEMP R0;\n" |
|
6761 "TEMP R1;\n" |
|
6762 "TEMP R2;\n" |
|
6763 "TEMP R3;\n" |
|
6764 "TEMP R4;\n" |
|
6765 "TEMP R5;\n" |
|
6766 "TEMP R6;\n" |
|
6767 "MUL R0.xy, fragment.position, c[4];\n" |
|
6768 "TEX R0, R0, texture[0], 2D;\n" |
|
6769 "MAX R1.w, R0, c[5].z;\n" |
|
6770 "RCP R2.w, R1.w;\n" |
|
6771 "MUL R2.xyz, R0, R2.w;\n" |
|
6772 "RSQ R1.w, R2.x;\n" |
|
6773 "MUL R5.xyz, -R2, c[5].w;\n" |
|
6774 "MUL R1.xyz, fragment.position.y, c[2];\n" |
|
6775 "MAD R1.xyz, fragment.position.x, c[1], R1;\n" |
|
6776 "ADD R1.xyz, R1, c[3];\n" |
|
6777 "RCP R1.z, R1.z;\n" |
|
6778 "MUL R1.xy, R1, R1.z;\n" |
|
6779 "MUL R1.xy, R1, c[0];\n" |
|
6780 "TEX R1.x, R1, texture[1], 2D;\n" |
|
6781 "RSQ R1.z, R2.y;\n" |
|
6782 "RSQ R1.y, R2.z;\n" |
|
6783 "MAD R2.xyz, -R0, R2.w, c[5].x;\n" |
|
6784 "RCP R3.x, R1.w;\n" |
|
6785 "RCP R3.y, R1.z;\n" |
|
6786 "RCP R3.z, R1.y;\n" |
|
6787 "ADD R1.x, -R1, c[5];\n" |
|
6788 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6789 "MAD R4.xyz, R0.w, R3, -R0;\n" |
|
6790 "MAD R3.xyz, R1, c[5].y, -R1.w;\n" |
|
6791 "MUL R4.xyz, R3, R4;\n" |
|
6792 "ADD R6.xyz, R5, c[6].x;\n" |
|
6793 "MUL R5.xyz, R2, R3;\n" |
|
6794 "MAD R2.xyz, -R2, R3, R1.w;\n" |
|
6795 "MUL R3.xyz, R1, c[5].y;\n" |
|
6796 "MAD R6.xyz, -R5, R6, R1.w;\n" |
|
6797 "MAD R4.xyz, R1.w, R0, R4;\n" |
|
6798 "MAD R5.xyz, -R0, R6, R4;\n" |
|
6799 "MUL R4.xyz, R0, c[5].w;\n" |
|
6800 "MUL R6.xyz, R0, R6;\n" |
|
6801 "SGE R4.xyz, R4, R0.w;\n" |
|
6802 "MAD R4.xyz, R4, R5, R6;\n" |
|
6803 "MAD R4.xyz, -R0, R2, R4;\n" |
|
6804 "MUL R2.xyz, R0, R2;\n" |
|
6805 "SGE R3.xyz, R3, R1.w;\n" |
|
6806 "MAD R2.xyz, R3, R4, R2;\n" |
|
6807 "ADD R2.w, -R0, c[5].x;\n" |
|
6808 "MAD R2.xyz, R1, R2.w, R2;\n" |
|
6809 "ADD R1.x, R1.w, R0.w;\n" |
|
6810 "ADD R1.y, -R1.w, c[5].x;\n" |
|
6811 "MAD result.color.xyz, R0, R1.y, R2;\n" |
|
6812 "MAD result.color.w, -R1, R0, R1.x;\n" |
|
6813 "END\n" |
|
6814 ; |
|
6815 |
|
6816 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE_NOMASK = |
|
6817 "!!ARBfp1.0\n" |
|
6818 "PARAM c[6] = { program.local[0..4],\n" |
|
6819 " { 1, 2 } };\n" |
|
6820 "TEMP R0;\n" |
|
6821 "TEMP R1;\n" |
|
6822 "TEMP R2;\n" |
|
6823 "TEMP R3;\n" |
|
6824 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6825 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6826 "ADD R0.xyz, R0, c[3];\n" |
|
6827 "RCP R0.z, R0.z;\n" |
|
6828 "MUL R0.xy, R0, R0.z;\n" |
|
6829 "MUL R0.xy, R0, c[0];\n" |
|
6830 "TEX R0.x, R0, texture[1], 2D;\n" |
|
6831 "ADD R1.x, -R0, c[5];\n" |
|
6832 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
6833 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6834 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6835 "MUL R3.xyz, R1.w, R0;\n" |
|
6836 "MUL R2.xyz, R1, R0.w;\n" |
|
6837 "ADD R0.xyz, R1, R0;\n" |
|
6838 "MIN R2.xyz, R2, R3;\n" |
|
6839 "ADD R1.x, R1.w, R0.w;\n" |
|
6840 "MAD result.color.xyz, -R2, c[5].y, R0;\n" |
|
6841 "MAD result.color.w, -R1, R0, R1.x;\n" |
|
6842 "END\n" |
|
6843 ; |
|
6844 |
|
6845 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION_NOMASK = |
|
6846 "!!ARBfp1.0\n" |
|
6847 "PARAM c[6] = { program.local[0..4],\n" |
|
6848 " { 1, 2 } };\n" |
|
6849 "TEMP R0;\n" |
|
6850 "TEMP R1;\n" |
|
6851 "TEMP R2;\n" |
|
6852 "TEMP R3;\n" |
|
6853 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6854 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6855 "ADD R0.xyz, R0, c[3];\n" |
|
6856 "RCP R0.z, R0.z;\n" |
|
6857 "MUL R0.xy, R0, R0.z;\n" |
|
6858 "MUL R0.xy, R0, c[0];\n" |
|
6859 "TEX R0.x, R0, texture[1], 2D;\n" |
|
6860 "ADD R1.x, -R0, c[5];\n" |
|
6861 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" |
|
6862 "TEX R0, R0.zwzw, texture[0], 2D;\n" |
|
6863 "MUL R1, fragment.color.primary, R1.x;\n" |
|
6864 "MUL R2.xyz, R1.w, R0;\n" |
|
6865 "MAD R3.xyz, R1, R0.w, R2;\n" |
|
6866 "MUL R2.xyz, R1, R0;\n" |
|
6867 "MAD R2.xyz, -R2, c[5].y, R3;\n" |
|
6868 "ADD R2.w, -R0, c[5].x;\n" |
|
6869 "MAD R1.xyz, R1, R2.w, R2;\n" |
|
6870 "ADD R2.x, R1.w, R0.w;\n" |
|
6871 "ADD R2.y, -R1.w, c[5].x;\n" |
|
6872 "MAD result.color.xyz, R0, R2.y, R1;\n" |
|
6873 "MAD result.color.w, -R1, R0, R2.x;\n" |
|
6874 "END\n" |
|
6875 ; |
|
6876 |
|
6877 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_MASK = |
|
6878 "!!ARBfp1.0\n" |
|
6879 "PARAM c[8] = { program.local[0..6],\n" |
|
6880 " { 1 } };\n" |
|
6881 "TEMP R0;\n" |
|
6882 "TEMP R1;\n" |
|
6883 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6884 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6885 "ADD R0.xyz, R0, c[3];\n" |
|
6886 "RCP R0.z, R0.z;\n" |
|
6887 "MUL R0.zw, R0.xyxy, R0.z;\n" |
|
6888 "MUL R0.zw, R0, c[0].xyxy;\n" |
|
6889 "TEX R1.x, R0.zwzw, texture[1], 2D;\n" |
|
6890 "ADD R0.xy, fragment.position, c[5];\n" |
|
6891 "MUL R0.xy, R0, c[4];\n" |
|
6892 "TEX R0, R0, texture[0], 2D;\n" |
|
6893 "DP4 R1.y, R0, c[6];\n" |
|
6894 "ADD R1.x, -R1, c[7];\n" |
|
6895 "MUL R0, fragment.color.primary, R1.x;\n" |
|
6896 "MUL result.color, R0, R1.y;\n" |
|
6897 "END\n" |
|
6898 ; |
|
6899 |
|
6900 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_NOMASK = |
|
6901 "!!ARBfp1.0\n" |
|
6902 "PARAM c[5] = { program.local[0..3],\n" |
|
6903 " { 1 } };\n" |
|
6904 "TEMP R0;\n" |
|
6905 "MUL R0.xyz, fragment.position.y, c[2];\n" |
|
6906 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" |
|
6907 "ADD R0.xyz, R0, c[3];\n" |
|
6908 "RCP R0.z, R0.z;\n" |
|
6909 "MUL R0.xy, R0, R0.z;\n" |
|
6910 "MUL R0.xy, R0, c[0];\n" |
|
6911 "TEX R0.x, R0, texture[0], 2D;\n" |
|
6912 "ADD R0.x, -R0, c[4];\n" |
|
6913 "MUL result.color, fragment.color.primary, R0.x;\n" |
|
6914 "END\n" |
|
6915 ; |
|
6916 |
|
6917 static const char *mask_fragment_program_sources[num_fragment_masks] = { |
|
6918 FragmentProgram_FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA, |
|
6919 FragmentProgram_FRAGMENT_PROGRAM_MASK_ELLIPSE_AA, |
|
6920 }; |
|
6921 |
|
6922 static const char *painter_fragment_program_sources[num_fragment_brushes][num_fragment_composition_modes] = { |
|
6923 { |
|
6924 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, |
|
6925 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY, |
|
6926 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN, |
|
6927 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY, |
|
6928 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN, |
|
6929 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN, |
|
6930 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE, |
|
6931 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN, |
|
6932 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT, |
|
6933 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT, |
|
6934 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE, |
|
6935 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION, |
|
6936 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, |
|
6937 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY_NOMASK, |
|
6938 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN_NOMASK, |
|
6939 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY_NOMASK, |
|
6940 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN_NOMASK, |
|
6941 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN_NOMASK, |
|
6942 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE_NOMASK, |
|
6943 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN_NOMASK, |
|
6944 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT_NOMASK, |
|
6945 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT_NOMASK, |
|
6946 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE_NOMASK, |
|
6947 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION_NOMASK, |
|
6948 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_MASK, |
|
6949 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_NOMASK, |
|
6950 }, |
|
6951 { |
|
6952 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, |
|
6953 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY, |
|
6954 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN, |
|
6955 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY, |
|
6956 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN, |
|
6957 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN, |
|
6958 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE, |
|
6959 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN, |
|
6960 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT, |
|
6961 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT, |
|
6962 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE, |
|
6963 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION, |
|
6964 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, |
|
6965 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY_NOMASK, |
|
6966 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN_NOMASK, |
|
6967 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY_NOMASK, |
|
6968 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN_NOMASK, |
|
6969 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN_NOMASK, |
|
6970 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE_NOMASK, |
|
6971 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN_NOMASK, |
|
6972 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT_NOMASK, |
|
6973 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK, |
|
6974 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE_NOMASK, |
|
6975 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION_NOMASK, |
|
6976 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_MASK, |
|
6977 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_NOMASK, |
|
6978 }, |
|
6979 { |
|
6980 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, |
|
6981 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY, |
|
6982 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN, |
|
6983 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY, |
|
6984 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN, |
|
6985 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN, |
|
6986 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE, |
|
6987 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN, |
|
6988 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT, |
|
6989 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT, |
|
6990 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE, |
|
6991 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION, |
|
6992 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, |
|
6993 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY_NOMASK, |
|
6994 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN_NOMASK, |
|
6995 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY_NOMASK, |
|
6996 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN_NOMASK, |
|
6997 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN_NOMASK, |
|
6998 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE_NOMASK, |
|
6999 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN_NOMASK, |
|
7000 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT_NOMASK, |
|
7001 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK, |
|
7002 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE_NOMASK, |
|
7003 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION_NOMASK, |
|
7004 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_MASK, |
|
7005 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_NOMASK, |
|
7006 }, |
|
7007 { |
|
7008 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, |
|
7009 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY, |
|
7010 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN, |
|
7011 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY, |
|
7012 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN, |
|
7013 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN, |
|
7014 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE, |
|
7015 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN, |
|
7016 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT, |
|
7017 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT, |
|
7018 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE, |
|
7019 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION, |
|
7020 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, |
|
7021 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY_NOMASK, |
|
7022 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN_NOMASK, |
|
7023 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY_NOMASK, |
|
7024 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN_NOMASK, |
|
7025 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN_NOMASK, |
|
7026 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE_NOMASK, |
|
7027 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN_NOMASK, |
|
7028 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT_NOMASK, |
|
7029 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT_NOMASK, |
|
7030 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE_NOMASK, |
|
7031 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION_NOMASK, |
|
7032 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_MASK, |
|
7033 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_NOMASK, |
|
7034 }, |
|
7035 { |
|
7036 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, |
|
7037 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY, |
|
7038 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN, |
|
7039 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY, |
|
7040 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN, |
|
7041 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN, |
|
7042 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE, |
|
7043 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN, |
|
7044 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT, |
|
7045 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT, |
|
7046 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE, |
|
7047 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION, |
|
7048 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, |
|
7049 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY_NOMASK, |
|
7050 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN_NOMASK, |
|
7051 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY_NOMASK, |
|
7052 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN_NOMASK, |
|
7053 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN_NOMASK, |
|
7054 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE_NOMASK, |
|
7055 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN_NOMASK, |
|
7056 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT_NOMASK, |
|
7057 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT_NOMASK, |
|
7058 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE_NOMASK, |
|
7059 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION_NOMASK, |
|
7060 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_MASK, |
|
7061 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_NOMASK, |
|
7062 }, |
|
7063 { |
|
7064 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, |
|
7065 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY, |
|
7066 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN, |
|
7067 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY, |
|
7068 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN, |
|
7069 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN, |
|
7070 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE, |
|
7071 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN, |
|
7072 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT, |
|
7073 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT, |
|
7074 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE, |
|
7075 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION, |
|
7076 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, |
|
7077 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY_NOMASK, |
|
7078 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN_NOMASK, |
|
7079 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY_NOMASK, |
|
7080 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN_NOMASK, |
|
7081 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN_NOMASK, |
|
7082 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE_NOMASK, |
|
7083 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN_NOMASK, |
|
7084 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT_NOMASK, |
|
7085 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT_NOMASK, |
|
7086 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE_NOMASK, |
|
7087 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION_NOMASK, |
|
7088 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_MASK, |
|
7089 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_NOMASK, |
|
7090 }, |
|
7091 }; |
|
7092 |
|
7093 static int painter_variable_locations[num_fragment_brushes][num_fragment_composition_modes][num_fragment_variables] = { |
|
7094 { |
|
7095 { -1, -1, -1, 2, -1, 0, 5, -1, 1, 3, 1, 0, -1, 4, -1, -1, -1, -1, -1, }, |
|
7096 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7097 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7098 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7099 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7100 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7101 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7102 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7103 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7104 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7105 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7106 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, |
|
7107 { -1, -1, -1, -1, -1, 0, -1, -1, 1, 2, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7108 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7109 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7110 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7111 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7112 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7113 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7114 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7115 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7116 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7117 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7118 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, |
|
7119 { -1, -1, -1, 0, -1, -1, 2, -1, -1, -1, 0, -1, -1, 1, -1, -1, -1, -1, -1, }, |
|
7120 { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }, |
|
7121 }, |
|
7122 { |
|
7123 { -1, -1, 3, 7, 4, 5, 10, -1, 6, 8, 1, 0, 2, 9, -1, 1, 0, 2, -1, }, |
|
7124 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7125 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7126 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7127 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7128 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7129 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7130 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7131 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7132 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7133 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7134 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, |
|
7135 { -1, -1, 3, -1, 4, 5, -1, -1, 6, 7, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7136 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7137 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7138 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7139 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7140 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7141 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7142 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7143 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7144 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7145 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7146 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, |
|
7147 { -1, -1, 3, 5, 4, -1, 7, -1, -1, -1, 0, -1, 1, 6, -1, 1, 0, 2, -1, }, |
|
7148 { -1, -1, 3, -1, 4, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, 0, 2, -1, }, |
|
7149 }, |
|
7150 { |
|
7151 { -1, -1, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, 2, 8, -1, -1, -1, 1, 0, }, |
|
7152 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7153 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7154 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7155 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7156 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7157 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7158 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7159 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7160 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7161 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7162 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, |
|
7163 { -1, -1, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7164 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7165 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7166 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7167 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7168 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7169 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7170 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7171 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7172 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7173 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7174 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, |
|
7175 { -1, -1, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, 1, 5, -1, -1, -1, 1, 0, }, |
|
7176 { -1, -1, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 0, }, |
|
7177 }, |
|
7178 { |
|
7179 { -1, 0, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, 2, 8, -1, -1, -1, 1, -1, }, |
|
7180 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7181 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7182 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7183 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7184 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7185 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7186 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7187 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7188 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7189 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7190 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, |
|
7191 { -1, 0, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7192 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7193 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7194 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7195 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7196 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7197 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7198 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7199 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7200 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7201 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7202 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, |
|
7203 { -1, 0, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, 1, 5, -1, -1, -1, 1, -1, }, |
|
7204 { -1, 0, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, }, |
|
7205 }, |
|
7206 { |
|
7207 { 2, -1, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, -1, 8, 0, -1, -1, 1, -1, }, |
|
7208 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7209 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7210 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7211 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7212 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7213 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7214 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7215 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7216 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7217 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7218 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7219 { 1, -1, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7220 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7221 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7222 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7223 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7224 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7225 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7226 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7227 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7228 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7229 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7230 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7231 { 1, -1, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, -1, 5, 0, -1, -1, 1, -1, }, |
|
7232 { 0, -1, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, -1, }, |
|
7233 }, |
|
7234 { |
|
7235 { 2, -1, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, -1, 8, 0, -1, -1, 1, -1, }, |
|
7236 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7237 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7238 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7239 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7240 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7241 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7242 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7243 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7244 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7245 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7246 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, |
|
7247 { 1, -1, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7248 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7249 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7250 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7251 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7252 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7253 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7254 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7255 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7256 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7257 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7258 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, |
|
7259 { 1, -1, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, -1, 5, 0, -1, -1, 1, -1, }, |
|
7260 { 0, -1, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, -1, }, |
|
7261 }, |
|
7262 }; |
|
7263 |
|
7264 static int mask_variable_locations[num_fragment_masks][num_fragment_variables] = { |
|
7265 { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }, |
|
7266 { -1, -1, 1, -1, 2, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, }, |
|
7267 }; |
|
7268 |
|
7269 #endif |