1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtOpenGL module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** GNU General Public License Usage 31 ** Alternatively, this file may be used under the terms of the GNU 32 ** General Public License version 3.0 as published by the Free Software 33 ** Foundation and appearing in the file LICENSE.GPL included in the 34 ** packaging of this file. Please review the following information to 35 ** ensure the GNU General Public License version 3.0 requirements will be 36 ** met: http://www.gnu.org/copyleft/gpl.html. 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, 4 },\n" 523 " { 16, 12, 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.x, R1.x;\n" 534 "MUL R2.xyz, R0, R1.x;\n" 535 "MAD R1.xyz, R2, c[5].x, -c[5].y;\n" 536 "MAD R3.xyz, R2, R1, c[5].z;\n" 537 "MAD R1.xyz, fragment.color.primary, c[4].y, -fragment.color.primary.w;\n" 538 "MUL R4.xyz, R0.w, R1;\n" 539 "MUL R5.xyz, R4, R3;\n" 540 "RSQ R1.w, R2.x;\n" 541 "RSQ R2.w, R2.z;\n" 542 "RCP R3.x, R1.w;\n" 543 "RSQ R1.w, R2.y;\n" 544 "MUL R5.xyz, R2, R5;\n" 545 "RCP R3.z, R2.w;\n" 546 "RCP R3.y, R1.w;\n" 547 "ADD R3.xyz, -R2, R3;\n" 548 "MUL R3.xyz, R4, R3;\n" 549 "ADD R2.xyz, -R2, c[4].x;\n" 550 "MAD R1.xyz, R1, R2, fragment.color.primary.w;\n" 551 "MUL R2.xyz, fragment.color.primary, c[4].y;\n" 552 "MAD R4.xyz, fragment.color.primary.w, R0, R5;\n" 553 "MAD R3.xyz, fragment.color.primary.w, R0, R3;\n" 554 "ADD R5.xyz, R3, -R4;\n" 555 "MUL R3.xyz, R0, c[4].w;\n" 556 "SGE R3.xyz, R3, R0.w;\n" 557 "MAD R3.xyz, R3, R5, R4;\n" 558 "MAD R3.xyz, -R0, R1, R3;\n" 559 "MUL R1.xyz, R0, R1;\n" 560 "SGE R2.xyz, R2, fragment.color.primary.w;\n" 561 "MAD R2.xyz, R2, R3, R1;\n" 562 "ADD R1.x, -R0.w, c[4];\n" 563 "MAD R2.xyz, fragment.color.primary, R1.x, R2;\n" 564 "ADD R1.x, -fragment.color.primary.w, c[4];\n" 565 "MAD R2.xyz, R0, R1.x, R2;\n" 566 "ADD R1.z, fragment.color.primary.w, R0.w;\n" 567 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" 568 "ADD R1.xy, fragment.position, c[2];\n" 569 "MUL R1.xy, R1, c[0];\n" 570 "TEX R1, R1, texture[1], 2D;\n" 571 "ADD R2, R2, -R0;\n" 572 "DP4 R1.x, R1, c[3];\n" 573 "MAD result.color, R1.x, R2, R0;\n" 574 "END\n" 575 ; 576 577 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE = 578 "!!ARBfp1.0\n" 579 "PARAM c[5] = { program.local[0..3],\n" 580 " { 2 } };\n" 581 "TEMP R0;\n" 582 "TEMP R1;\n" 583 "TEMP R2;\n" 584 "TEMP R3;\n" 585 "MUL R0.xy, fragment.position, c[1];\n" 586 "TEX R0, R0, texture[0], 2D;\n" 587 "ADD R1.xyz, fragment.color.primary, R0;\n" 588 "MUL R3.xyz, fragment.color.primary.w, R0;\n" 589 "MUL R2.xyz, fragment.color.primary, R0.w;\n" 590 "MIN R2.xyz, R2, R3;\n" 591 "MAD R2.xyz, -R2, c[4].x, R1;\n" 592 "ADD R1.z, fragment.color.primary.w, R0.w;\n" 593 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" 594 "ADD R1.xy, fragment.position, c[2];\n" 595 "MUL R1.xy, R1, c[0];\n" 596 "TEX R1, R1, texture[1], 2D;\n" 597 "ADD R2, R2, -R0;\n" 598 "DP4 R1.x, R1, c[3];\n" 599 "MAD result.color, R1.x, R2, R0;\n" 600 "END\n" 601 ; 602 603 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION = 604 "!!ARBfp1.0\n" 605 "PARAM c[5] = { program.local[0..3],\n" 606 " { 2, 1 } };\n" 607 "TEMP R0;\n" 608 "TEMP R1;\n" 609 "TEMP R2;\n" 610 "MUL R0.xy, fragment.position, c[1];\n" 611 "TEX R0, R0, texture[0], 2D;\n" 612 "MUL R1.xyz, fragment.color.primary.w, R0;\n" 613 "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n" 614 "MUL R1.xyz, fragment.color.primary, R0;\n" 615 "MAD R1.xyz, -R1, c[4].x, R2;\n" 616 "ADD R1.w, -R0, c[4].y;\n" 617 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" 618 "ADD R1.w, -fragment.color.primary, c[4].y;\n" 619 "MAD R2.xyz, R0, R1.w, R1;\n" 620 "ADD R1.z, fragment.color.primary.w, R0.w;\n" 621 "MAD R2.w, -fragment.color.primary, R0, R1.z;\n" 622 "ADD R1.xy, fragment.position, c[2];\n" 623 "MUL R1.xy, R1, c[0];\n" 624 "TEX R1, R1, texture[1], 2D;\n" 625 "ADD R2, R2, -R0;\n" 626 "DP4 R1.x, R1, c[3];\n" 627 "MAD result.color, R1.x, R2, R0;\n" 628 "END\n" 629 ; 630 631 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = 632 "!!ARBfp1.0\n" 633 "PARAM c[4] = { program.local[0..2],\n" 634 " { 1 } };\n" 635 "TEMP R0;\n" 636 "TEMP R1;\n" 637 "TEMP R2;\n" 638 "MUL R0.xy, fragment.position, c[2];\n" 639 "TEX R0, R0, texture[0], 2D;\n" 640 "MUL R1.xyz, R0, c[0].y;\n" 641 "MUL R2.xyz, fragment.color.primary.w, R1;\n" 642 "MUL R1.xyz, fragment.color.primary, c[0].x;\n" 643 "MAD R2.xyz, R0.w, R1, R2;\n" 644 "MUL R0.xyz, R0, c[1].z;\n" 645 "ADD R1.w, -R0, c[3].x;\n" 646 "MUL R1.xyz, fragment.color.primary, c[1].y;\n" 647 "MAD R1.xyz, R1.w, R1, R2;\n" 648 "ADD R2.x, -fragment.color.primary.w, c[3];\n" 649 "MAD result.color.xyz, R2.x, R0, R1;\n" 650 "MUL R0.x, fragment.color.primary.w, R0.w;\n" 651 "MUL R0.z, R0.w, R2.x;\n" 652 "MUL R0.y, fragment.color.primary.w, R1.w;\n" 653 "DP3 result.color.w, R0, c[1];\n" 654 "END\n" 655 ; 656 657 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY_NOMASK = 658 "!!ARBfp1.0\n" 659 "PARAM c[2] = { program.local[0],\n" 660 " { 1 } };\n" 661 "TEMP R0;\n" 662 "TEMP R1;\n" 663 "TEMP R2;\n" 664 "MUL R0.xy, fragment.position, c[0];\n" 665 "TEX R0, R0, texture[0], 2D;\n" 666 "ADD R1.x, -R0.w, c[1];\n" 667 "MUL R1.xyz, fragment.color.primary, R1.x;\n" 668 "ADD R1.w, fragment.color.primary, R0;\n" 669 "MAD R1.xyz, fragment.color.primary, R0, R1;\n" 670 "ADD R2.x, -fragment.color.primary.w, c[1];\n" 671 "MAD result.color.xyz, R0, R2.x, R1;\n" 672 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" 673 "END\n" 674 ; 675 676 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN_NOMASK = 677 "!!ARBfp1.0\n" 678 "PARAM c[1] = { program.local[0] };\n" 679 "TEMP R0;\n" 680 "TEMP R1;\n" 681 "MUL R0.xy, fragment.position, c[0];\n" 682 "TEX R0, R0, texture[0], 2D;\n" 683 "ADD R1, fragment.color.primary, R0;\n" 684 "MAD result.color, -fragment.color.primary, R0, R1;\n" 685 "END\n" 686 ; 687 688 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY_NOMASK = 689 "!!ARBfp1.0\n" 690 "PARAM c[2] = { program.local[0],\n" 691 " { 2, 1 } };\n" 692 "TEMP R0;\n" 693 "TEMP R1;\n" 694 "TEMP R2;\n" 695 "TEMP R3;\n" 696 "MUL R0.xy, fragment.position, c[0];\n" 697 "TEX R0, R0, texture[0], 2D;\n" 698 "ADD R1.w, -R0, c[1].y;\n" 699 "ADD R2.xyz, fragment.color.primary.w, -fragment.color.primary;\n" 700 "ADD R1.xyz, R0.w, -R0;\n" 701 "MUL R1.xyz, R1, R2;\n" 702 "MUL R1.xyz, R1, c[1].x;\n" 703 "MAD R1.xyz, fragment.color.primary.w, R0.w, -R1;\n" 704 "MUL R3.xyz, fragment.color.primary, R1.w;\n" 705 "MUL R2.xyz, fragment.color.primary, R0;\n" 706 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" 707 "ADD R1.w, -fragment.color.primary, c[1].y;\n" 708 "MAD R2.xyz, R2, c[1].x, R3;\n" 709 "MAD R2.xyz, R0, R1.w, R2;\n" 710 "MAD R1.xyz, R0, R1.w, R1;\n" 711 "MUL R0.xyz, R0, c[1].x;\n" 712 "ADD R1.w, fragment.color.primary, R0;\n" 713 "ADD R1.xyz, R1, -R2;\n" 714 "SGE R0.xyz, R0, R0.w;\n" 715 "MAD result.color.xyz, R0, R1, R2;\n" 716 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" 717 "END\n" 718 ; 719 720 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN_NOMASK = 721 "!!ARBfp1.0\n" 722 "PARAM c[2] = { program.local[0],\n" 723 " { 1 } };\n" 724 "TEMP R0;\n" 725 "TEMP R1;\n" 726 "TEMP R2;\n" 727 "MUL R0.xy, fragment.position, c[0];\n" 728 "TEX R0, R0, texture[0], 2D;\n" 729 "MUL R2.xyz, fragment.color.primary.w, R0;\n" 730 "MUL R1.xyz, fragment.color.primary, R0.w;\n" 731 "MIN R1.xyz, R1, R2;\n" 732 "ADD R1.w, -R0, c[1].x;\n" 733 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" 734 "ADD R1.w, fragment.color.primary, R0;\n" 735 "ADD R2.x, -fragment.color.primary.w, c[1];\n" 736 "MAD result.color.xyz, R0, R2.x, R1;\n" 737 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" 738 "END\n" 739 ; 740 741 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN_NOMASK = 742 "!!ARBfp1.0\n" 743 "PARAM c[2] = { program.local[0],\n" 744 " { 1 } };\n" 745 "TEMP R0;\n" 746 "TEMP R1;\n" 747 "TEMP R2;\n" 748 "MUL R0.xy, fragment.position, c[0];\n" 749 "TEX R0, R0, texture[0], 2D;\n" 750 "MUL R2.xyz, fragment.color.primary.w, R0;\n" 751 "MUL R1.xyz, fragment.color.primary, R0.w;\n" 752 "MAX R1.xyz, R1, R2;\n" 753 "ADD R1.w, -R0, c[1].x;\n" 754 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" 755 "ADD R1.w, fragment.color.primary, R0;\n" 756 "ADD R2.x, -fragment.color.primary.w, c[1];\n" 757 "MAD result.color.xyz, R0, R2.x, R1;\n" 758 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" 759 "END\n" 760 ; 761 762 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE_NOMASK = 763 "!!ARBfp1.0\n" 764 "PARAM c[2] = { program.local[0],\n" 765 " { 1, 1e-006 } };\n" 766 "TEMP R0;\n" 767 "TEMP R1;\n" 768 "TEMP R2;\n" 769 "MAX R1.y, fragment.color.primary.w, c[1];\n" 770 "RCP R2.x, R1.y;\n" 771 "MUL R0.xy, fragment.position, c[0];\n" 772 "TEX R0, R0, texture[0], 2D;\n" 773 "ADD R1.x, -fragment.color.primary.w, c[1];\n" 774 "MUL R1.xyz, R0, R1.x;\n" 775 "ADD R1.w, -R0, c[1].x;\n" 776 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" 777 "MAD R2.xyz, -fragment.color.primary, R2.x, c[1].x;\n" 778 "MAX R2.xyz, R2, c[1].y;\n" 779 "MUL R0.xyz, fragment.color.primary.w, R0;\n" 780 "MUL R1.w, fragment.color.primary, R0;\n" 781 "RCP R2.x, R2.x;\n" 782 "RCP R2.y, R2.y;\n" 783 "RCP R2.z, R2.z;\n" 784 "MAD R2.xyz, R0, R2, R1;\n" 785 "MAD R1.xyz, fragment.color.primary.w, R0.w, R1;\n" 786 "MAD R0.xyz, fragment.color.primary, R0.w, R0;\n" 787 "SGE R0.xyz, R0, R1.w;\n" 788 "ADD R1.xyz, R1, -R2;\n" 789 "ADD R1.w, fragment.color.primary, R0;\n" 790 "MAD result.color.xyz, R0, R1, R2;\n" 791 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" 792 "END\n" 793 ; 794 795 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN_NOMASK = 796 "!!ARBfp1.0\n" 797 "PARAM c[2] = { program.local[0],\n" 798 " { 1, 9.9999997e-006 } };\n" 799 "TEMP R0;\n" 800 "TEMP R1;\n" 801 "TEMP R2;\n" 802 "TEMP R3;\n" 803 "TEMP R4;\n" 804 "MUL R0.xy, fragment.position, c[0];\n" 805 "TEX R0, R0, texture[0], 2D;\n" 806 "MUL R1.xyz, fragment.color.primary.w, R0;\n" 807 "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n" 808 "MAD R1.xyz, -fragment.color.primary.w, R0.w, R2;\n" 809 "MUL R3.xyz, fragment.color.primary.w, R1;\n" 810 "MAX R1.xyz, fragment.color.primary, c[1].y;\n" 811 "ADD R1.w, -R0, c[1].x;\n" 812 "MUL R4.xyz, fragment.color.primary, R1.w;\n" 813 "ADD R2.w, -fragment.color.primary, c[1].x;\n" 814 "RCP R1.x, R1.x;\n" 815 "RCP R1.y, R1.y;\n" 816 "RCP R1.z, R1.z;\n" 817 "MAD R1.xyz, R3, R1, R4;\n" 818 "MUL R3.xyz, R0, R2.w;\n" 819 "MAD R0.xyz, R0, R2.w, R1;\n" 820 "MAD R1.xyz, fragment.color.primary, R1.w, R3;\n" 821 "MUL R1.w, fragment.color.primary, R0;\n" 822 "SGE R2.xyz, R2, R1.w;\n" 823 "ADD R0.xyz, R0, -R1;\n" 824 "ADD R1.w, fragment.color.primary, R0;\n" 825 "MAD result.color.xyz, R2, R0, R1;\n" 826 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" 827 "END\n" 828 ; 829 830 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT_NOMASK = 831 "!!ARBfp1.0\n" 832 "PARAM c[2] = { program.local[0],\n" 833 " { 2, 1 } };\n" 834 "TEMP R0;\n" 835 "TEMP R1;\n" 836 "TEMP R2;\n" 837 "TEMP R3;\n" 838 "MUL R0.xy, fragment.position, c[0];\n" 839 "TEX R0, R0, texture[0], 2D;\n" 840 "ADD R1.w, -R0, c[1].y;\n" 841 "ADD R2.xyz, fragment.color.primary.w, -fragment.color.primary;\n" 842 "ADD R1.xyz, R0.w, -R0;\n" 843 "MUL R1.xyz, R1, R2;\n" 844 "MUL R1.xyz, R1, c[1].x;\n" 845 "MAD R1.xyz, fragment.color.primary.w, R0.w, -R1;\n" 846 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" 847 "MUL R3.xyz, fragment.color.primary, R1.w;\n" 848 "MUL R2.xyz, fragment.color.primary, R0;\n" 849 "ADD R1.w, -fragment.color.primary, c[1].y;\n" 850 "MAD R2.xyz, R2, c[1].x, R3;\n" 851 "MAD R2.xyz, R0, R1.w, R2;\n" 852 "MAD R0.xyz, R0, R1.w, R1;\n" 853 "ADD R1.xyz, R0, -R2;\n" 854 "MUL R0.xyz, fragment.color.primary, c[1].x;\n" 855 "ADD R1.w, fragment.color.primary, R0;\n" 856 "SGE R0.xyz, R0, fragment.color.primary.w;\n" 857 "MAD result.color.xyz, R0, R1, R2;\n" 858 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" 859 "END\n" 860 ; 861 862 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT_NOMASK = 863 "!!ARBfp1.0\n" 864 "PARAM c[3] = { program.local[0],\n" 865 " { 1, 2, 9.9999997e-006, 4 },\n" 866 " { 16, 12, 3 } };\n" 867 "TEMP R0;\n" 868 "TEMP R1;\n" 869 "TEMP R2;\n" 870 "TEMP R3;\n" 871 "TEMP R4;\n" 872 "TEMP R5;\n" 873 "MUL R0.xy, fragment.position, c[0];\n" 874 "TEX R0, R0, texture[0], 2D;\n" 875 "MAX R1.x, R0.w, c[1].z;\n" 876 "RCP R1.x, R1.x;\n" 877 "MUL R2.xyz, R0, R1.x;\n" 878 "MAD R1.xyz, R2, c[2].x, -c[2].y;\n" 879 "MAD R3.xyz, R2, R1, c[2].z;\n" 880 "MAD R1.xyz, fragment.color.primary, c[1].y, -fragment.color.primary.w;\n" 881 "MUL R4.xyz, R0.w, R1;\n" 882 "MUL R5.xyz, R4, R3;\n" 883 "RSQ R1.w, R2.x;\n" 884 "RCP R3.x, R1.w;\n" 885 "RSQ R2.w, R2.z;\n" 886 "RSQ R1.w, R2.y;\n" 887 "MUL R5.xyz, R2, R5;\n" 888 "RCP R3.z, R2.w;\n" 889 "RCP R3.y, R1.w;\n" 890 "ADD R3.xyz, -R2, R3;\n" 891 "MUL R3.xyz, R4, R3;\n" 892 "ADD R2.xyz, -R2, c[1].x;\n" 893 "MAD R1.xyz, R1, R2, fragment.color.primary.w;\n" 894 "MUL R2.xyz, fragment.color.primary, c[1].y;\n" 895 "MAD R4.xyz, fragment.color.primary.w, R0, R5;\n" 896 "MAD R3.xyz, fragment.color.primary.w, R0, R3;\n" 897 "ADD R5.xyz, R3, -R4;\n" 898 "MUL R3.xyz, R0, c[1].w;\n" 899 "SGE R3.xyz, R3, R0.w;\n" 900 "MAD R3.xyz, R3, R5, R4;\n" 901 "MAD R3.xyz, -R0, R1, R3;\n" 902 "MUL R1.xyz, R0, R1;\n" 903 "SGE R2.xyz, R2, fragment.color.primary.w;\n" 904 "MAD R2.xyz, R2, R3, R1;\n" 905 "ADD R1.x, -R0.w, c[1];\n" 906 "MAD R2.xyz, fragment.color.primary, R1.x, R2;\n" 907 "ADD R1.x, fragment.color.primary.w, R0.w;\n" 908 "ADD R1.y, -fragment.color.primary.w, c[1].x;\n" 909 "MAD result.color.xyz, R0, R1.y, R2;\n" 910 "MAD result.color.w, -fragment.color.primary, R0, R1.x;\n" 911 "END\n" 912 ; 913 914 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE_NOMASK = 915 "!!ARBfp1.0\n" 916 "PARAM c[2] = { program.local[0],\n" 917 " { 2 } };\n" 918 "TEMP R0;\n" 919 "TEMP R1;\n" 920 "TEMP R2;\n" 921 "MUL R0.xy, fragment.position, c[0];\n" 922 "TEX R0, R0, texture[0], 2D;\n" 923 "MUL R2.xyz, fragment.color.primary.w, R0;\n" 924 "MUL R1.xyz, fragment.color.primary, R0.w;\n" 925 "ADD R1.w, fragment.color.primary, R0;\n" 926 "MIN R1.xyz, R1, R2;\n" 927 "ADD R0.xyz, fragment.color.primary, R0;\n" 928 "MAD result.color.xyz, -R1, c[1].x, R0;\n" 929 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" 930 "END\n" 931 ; 932 933 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION_NOMASK = 934 "!!ARBfp1.0\n" 935 "PARAM c[2] = { program.local[0],\n" 936 " { 2, 1 } };\n" 937 "TEMP R0;\n" 938 "TEMP R1;\n" 939 "TEMP R2;\n" 940 "MUL R0.xy, fragment.position, c[0];\n" 941 "TEX R0, R0, texture[0], 2D;\n" 942 "MUL R1.xyz, fragment.color.primary.w, R0;\n" 943 "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n" 944 "MUL R1.xyz, fragment.color.primary, R0;\n" 945 "MAD R1.xyz, -R1, c[1].x, R2;\n" 946 "ADD R1.w, -R0, c[1].y;\n" 947 "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n" 948 "ADD R1.w, fragment.color.primary, R0;\n" 949 "ADD R2.x, -fragment.color.primary.w, c[1].y;\n" 950 "MAD result.color.xyz, R0, R2.x, R1;\n" 951 "MAD result.color.w, -fragment.color.primary, R0, R1;\n" 952 "END\n" 953 ; 954 955 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_MASK = 956 "!!ARBfp1.0\n" 957 "PARAM c[3] = { program.local[0..2] };\n" 958 "TEMP R0;\n" 959 "ADD R0.xy, fragment.position, c[1];\n" 960 "MUL R0.xy, R0, c[0];\n" 961 "TEX R0, R0, texture[0], 2D;\n" 962 "DP4 R0.x, R0, c[2];\n" 963 "MUL result.color, fragment.color.primary, R0.x;\n" 964 "END\n" 965 ; 966 967 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_NOMASK = 968 "!!ARBfp1.0\n" 969 "MOV result.color, fragment.color.primary;\n" 970 "END\n" 971 ; 972 973 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = 974 "!!ARBfp1.0\n" 975 "PARAM c[12] = { program.local[0..10],\n" 976 " { 2, 4, 1 } };\n" 977 "TEMP R0;\n" 978 "TEMP R1;\n" 979 "TEMP R2;\n" 980 "TEMP R3;\n" 981 "MUL R0.xyz, fragment.position.y, c[3];\n" 982 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 983 "ADD R0.xyz, R0, c[4];\n" 984 "RCP R0.z, R0.z;\n" 985 "MUL R0.xy, R0, R0.z;\n" 986 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 987 "ADD R0.z, R0, R0.w;\n" 988 "MUL R0.xy, R0, c[0];\n" 989 "ADD R0.x, R0, R0.y;\n" 990 "MUL R0.z, -R0, c[1].x;\n" 991 "MUL R0.y, R0.x, c[11].x;\n" 992 "MUL R0.z, R0, c[11].y;\n" 993 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 994 "RSQ R0.x, R0.x;\n" 995 "RCP R0.z, R0.x;\n" 996 "ADD R1.x, -R0.y, R0.z;\n" 997 "MOV R0.x, c[11];\n" 998 "MUL R0.z, R0.x, c[1].x;\n" 999 "RCP R1.y, R0.z;\n" 1000 "MUL R0.xy, fragment.position, c[8];\n" 1001 "TEX R0, R0, texture[0], 2D;\n" 1002 "MUL R1.x, R1, R1.y;\n" 1003 "TEX R1, R1, texture[2], 1D;\n" 1004 "MUL R2.xyz, R0, c[5].y;\n" 1005 "MUL R3.xyz, R1.w, R2;\n" 1006 "MUL R2.xyz, R1, c[5].x;\n" 1007 "MAD R2.xyz, R0.w, R2, R3;\n" 1008 "ADD R3.xy, fragment.position, c[9];\n" 1009 "ADD R2.w, -R0, c[11].z;\n" 1010 "MUL R1.xyz, R1, c[6].y;\n" 1011 "MAD R2.xyz, R2.w, R1, R2;\n" 1012 "MUL R1.xyz, R0, c[6].z;\n" 1013 "ADD R3.z, -R1.w, c[11];\n" 1014 "MAD R2.xyz, R3.z, R1, R2;\n" 1015 "MUL R1.y, R1.w, R2.w;\n" 1016 "MUL R1.x, R1.w, R0.w;\n" 1017 "MUL R1.z, R0.w, R3;\n" 1018 "DP3 R2.w, R1, c[6];\n" 1019 "MUL R3.xy, R3, c[7];\n" 1020 "TEX R1, R3, texture[1], 2D;\n" 1021 "ADD R2, R2, -R0;\n" 1022 "DP4 R1.x, R1, c[10];\n" 1023 "MAD result.color, R1.x, R2, R0;\n" 1024 "END\n" 1025 ; 1026 1027 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY = 1028 "!!ARBfp1.0\n" 1029 "PARAM c[10] = { program.local[0..8],\n" 1030 " { 2, 4, 1 } };\n" 1031 "TEMP R0;\n" 1032 "TEMP R1;\n" 1033 "TEMP R2;\n" 1034 "MUL R0.xyz, fragment.position.y, c[3];\n" 1035 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1036 "ADD R0.xyz, R0, c[4];\n" 1037 "RCP R0.z, R0.z;\n" 1038 "MUL R0.xy, R0, R0.z;\n" 1039 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1040 "ADD R0.z, R0, R0.w;\n" 1041 "MUL R0.xy, R0, c[0];\n" 1042 "ADD R0.x, R0, R0.y;\n" 1043 "MUL R0.z, -R0, c[1].x;\n" 1044 "MUL R0.y, R0.x, c[9].x;\n" 1045 "MUL R0.z, R0, c[9].y;\n" 1046 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1047 "RSQ R0.x, R0.x;\n" 1048 "RCP R0.z, R0.x;\n" 1049 "ADD R1.x, -R0.y, R0.z;\n" 1050 "MOV R0.x, c[9];\n" 1051 "MUL R0.z, R0.x, c[1].x;\n" 1052 "RCP R1.y, R0.z;\n" 1053 "MUL R0.xy, fragment.position, c[6];\n" 1054 "TEX R0, R0, texture[0], 2D;\n" 1055 "MUL R1.x, R1, R1.y;\n" 1056 "TEX R1, R1, texture[2], 1D;\n" 1057 "ADD R2.x, -R0.w, c[9].z;\n" 1058 "MUL R2.xyz, R1, R2.x;\n" 1059 "MAD R1.xyz, R1, R0, R2;\n" 1060 "ADD R2.x, -R1.w, c[9].z;\n" 1061 "MAD R2.xyz, R0, R2.x, R1;\n" 1062 "ADD R1.z, R1.w, R0.w;\n" 1063 "MAD R2.w, -R1, R0, R1.z;\n" 1064 "ADD R1.xy, fragment.position, c[7];\n" 1065 "MUL R1.xy, R1, c[5];\n" 1066 "TEX R1, R1, texture[1], 2D;\n" 1067 "ADD R2, R2, -R0;\n" 1068 "DP4 R1.x, R1, c[8];\n" 1069 "MAD result.color, R1.x, R2, R0;\n" 1070 "END\n" 1071 ; 1072 1073 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN = 1074 "!!ARBfp1.0\n" 1075 "PARAM c[10] = { program.local[0..8],\n" 1076 " { 2, 4 } };\n" 1077 "TEMP R0;\n" 1078 "TEMP R1;\n" 1079 "TEMP R2;\n" 1080 "TEMP R3;\n" 1081 "MUL R0.xyz, fragment.position.y, c[3];\n" 1082 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1083 "ADD R0.xyz, R0, c[4];\n" 1084 "RCP R0.z, R0.z;\n" 1085 "MUL R0.xy, R0, R0.z;\n" 1086 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1087 "ADD R0.z, R0, R0.w;\n" 1088 "MUL R0.xy, R0, c[0];\n" 1089 "ADD R0.x, R0, R0.y;\n" 1090 "MUL R0.y, R0.x, c[9].x;\n" 1091 "MOV R0.x, c[9];\n" 1092 "MUL R0.z, -R0, c[1].x;\n" 1093 "MUL R0.z, R0, c[9].y;\n" 1094 "MAD R0.z, R0.y, R0.y, -R0;\n" 1095 "ADD R3.xy, fragment.position, c[7];\n" 1096 "MUL R0.w, R0.x, c[1].x;\n" 1097 "RSQ R0.z, R0.z;\n" 1098 "RCP R0.x, R0.z;\n" 1099 "RCP R0.z, R0.w;\n" 1100 "ADD R0.x, -R0.y, R0;\n" 1101 "MUL R0.z, R0.x, R0;\n" 1102 "TEX R1, R0.z, texture[2], 1D;\n" 1103 "MUL R0.xy, fragment.position, c[6];\n" 1104 "TEX R0, R0, texture[0], 2D;\n" 1105 "ADD R2, R1, R0;\n" 1106 "MAD R2, -R1, R0, R2;\n" 1107 "MUL R3.xy, R3, c[5];\n" 1108 "TEX R1, R3, texture[1], 2D;\n" 1109 "ADD R2, R2, -R0;\n" 1110 "DP4 R1.x, R1, c[8];\n" 1111 "MAD result.color, R1.x, R2, R0;\n" 1112 "END\n" 1113 ; 1114 1115 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY = 1116 "!!ARBfp1.0\n" 1117 "PARAM c[10] = { program.local[0..8],\n" 1118 " { 2, 4, 1 } };\n" 1119 "TEMP R0;\n" 1120 "TEMP R1;\n" 1121 "TEMP R2;\n" 1122 "TEMP R3;\n" 1123 "TEMP R4;\n" 1124 "MUL R0.xyz, fragment.position.y, c[3];\n" 1125 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1126 "ADD R0.xyz, R0, c[4];\n" 1127 "RCP R0.z, R0.z;\n" 1128 "MUL R0.xy, R0, R0.z;\n" 1129 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1130 "ADD R0.z, R0, R0.w;\n" 1131 "MUL R0.xy, R0, c[0];\n" 1132 "ADD R0.x, R0, R0.y;\n" 1133 "MUL R0.y, R0.x, c[9].x;\n" 1134 "MOV R0.x, c[9];\n" 1135 "MUL R0.z, -R0, c[1].x;\n" 1136 "MUL R0.z, R0, c[9].y;\n" 1137 "MAD R0.z, R0.y, R0.y, -R0;\n" 1138 "MUL R1.xy, fragment.position, c[6];\n" 1139 "TEX R1, R1, texture[0], 2D;\n" 1140 "MUL R0.w, R0.x, c[1].x;\n" 1141 "RSQ R0.z, R0.z;\n" 1142 "RCP R0.x, R0.z;\n" 1143 "ADD R2.w, -R1, c[9].z;\n" 1144 "RCP R0.z, R0.w;\n" 1145 "ADD R0.x, -R0.y, R0;\n" 1146 "MUL R0.x, R0, R0.z;\n" 1147 "TEX R0, R0, texture[2], 1D;\n" 1148 "ADD R3.xyz, R0.w, -R0;\n" 1149 "ADD R2.xyz, R1.w, -R1;\n" 1150 "MUL R2.xyz, R2, R3;\n" 1151 "MUL R2.xyz, R2, c[9].x;\n" 1152 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 1153 "MUL R4.xyz, R0, R2.w;\n" 1154 "MUL R3.xyz, R0, R1;\n" 1155 "MAD R0.xyz, R0, R2.w, R2;\n" 1156 "ADD R2.x, -R0.w, c[9].z;\n" 1157 "MAD R3.xyz, R3, c[9].x, R4;\n" 1158 "MAD R3.xyz, R1, R2.x, R3;\n" 1159 "MAD R0.xyz, R1, R2.x, R0;\n" 1160 "MUL R2.xyz, R1, c[9].x;\n" 1161 "ADD R0.xyz, R0, -R3;\n" 1162 "SGE R2.xyz, R2, R1.w;\n" 1163 "MAD R2.xyz, R2, R0, R3;\n" 1164 "ADD R0.z, R0.w, R1.w;\n" 1165 "MAD R2.w, -R0, R1, R0.z;\n" 1166 "ADD R0.xy, fragment.position, c[7];\n" 1167 "MUL R0.xy, R0, c[5];\n" 1168 "TEX R0, R0, texture[1], 2D;\n" 1169 "ADD R2, R2, -R1;\n" 1170 "DP4 R0.x, R0, c[8];\n" 1171 "MAD result.color, R0.x, R2, R1;\n" 1172 "END\n" 1173 ; 1174 1175 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN = 1176 "!!ARBfp1.0\n" 1177 "PARAM c[10] = { program.local[0..8],\n" 1178 " { 2, 4, 1 } };\n" 1179 "TEMP R0;\n" 1180 "TEMP R1;\n" 1181 "TEMP R2;\n" 1182 "TEMP R3;\n" 1183 "MUL R0.xyz, fragment.position.y, c[3];\n" 1184 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1185 "ADD R0.xyz, R0, c[4];\n" 1186 "RCP R0.z, R0.z;\n" 1187 "MUL R0.xy, R0, R0.z;\n" 1188 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1189 "ADD R0.z, R0, R0.w;\n" 1190 "MUL R0.xy, R0, c[0];\n" 1191 "ADD R0.x, R0, R0.y;\n" 1192 "MUL R0.z, -R0, c[1].x;\n" 1193 "MUL R0.y, R0.x, c[9].x;\n" 1194 "MUL R0.z, R0, c[9].y;\n" 1195 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1196 "RSQ R0.z, R0.x;\n" 1197 "MOV R0.x, c[9];\n" 1198 "MUL R0.x, R0, c[1];\n" 1199 "RCP R0.z, R0.z;\n" 1200 "ADD R0.z, -R0.y, R0;\n" 1201 "RCP R0.w, R0.x;\n" 1202 "MUL R1.x, R0.z, R0.w;\n" 1203 "MUL R0.xy, fragment.position, c[6];\n" 1204 "TEX R0, R0, texture[0], 2D;\n" 1205 "TEX R1, R1, texture[2], 1D;\n" 1206 "MUL R3.xyz, R1.w, R0;\n" 1207 "MUL R2.xyz, R1, R0.w;\n" 1208 "MIN R2.xyz, R2, R3;\n" 1209 "ADD R2.w, -R0, c[9].z;\n" 1210 "MAD R1.xyz, R1, R2.w, R2;\n" 1211 "ADD R2.x, -R1.w, c[9].z;\n" 1212 "MAD R2.xyz, R0, R2.x, R1;\n" 1213 "ADD R1.z, R1.w, R0.w;\n" 1214 "MAD R2.w, -R1, R0, R1.z;\n" 1215 "ADD R1.xy, fragment.position, c[7];\n" 1216 "MUL R1.xy, R1, c[5];\n" 1217 "TEX R1, R1, texture[1], 2D;\n" 1218 "ADD R2, R2, -R0;\n" 1219 "DP4 R1.x, R1, c[8];\n" 1220 "MAD result.color, R1.x, R2, R0;\n" 1221 "END\n" 1222 ; 1223 1224 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN = 1225 "!!ARBfp1.0\n" 1226 "PARAM c[10] = { program.local[0..8],\n" 1227 " { 2, 4, 1 } };\n" 1228 "TEMP R0;\n" 1229 "TEMP R1;\n" 1230 "TEMP R2;\n" 1231 "TEMP R3;\n" 1232 "MUL R0.xyz, fragment.position.y, c[3];\n" 1233 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1234 "ADD R0.xyz, R0, c[4];\n" 1235 "RCP R0.z, R0.z;\n" 1236 "MUL R0.xy, R0, R0.z;\n" 1237 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1238 "ADD R0.z, R0, R0.w;\n" 1239 "MUL R0.xy, R0, c[0];\n" 1240 "ADD R0.x, R0, R0.y;\n" 1241 "MUL R0.z, -R0, c[1].x;\n" 1242 "MUL R0.y, R0.x, c[9].x;\n" 1243 "MUL R0.z, R0, c[9].y;\n" 1244 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1245 "RSQ R0.z, R0.x;\n" 1246 "MOV R0.x, c[9];\n" 1247 "MUL R0.x, R0, c[1];\n" 1248 "RCP R0.z, R0.z;\n" 1249 "ADD R0.z, -R0.y, R0;\n" 1250 "RCP R0.w, R0.x;\n" 1251 "MUL R1.x, R0.z, R0.w;\n" 1252 "MUL R0.xy, fragment.position, c[6];\n" 1253 "TEX R0, R0, texture[0], 2D;\n" 1254 "TEX R1, R1, texture[2], 1D;\n" 1255 "MUL R3.xyz, R1.w, R0;\n" 1256 "MUL R2.xyz, R1, R0.w;\n" 1257 "MAX R2.xyz, R2, R3;\n" 1258 "ADD R2.w, -R0, c[9].z;\n" 1259 "MAD R1.xyz, R1, R2.w, R2;\n" 1260 "ADD R2.x, -R1.w, c[9].z;\n" 1261 "MAD R2.xyz, R0, R2.x, R1;\n" 1262 "ADD R1.z, R1.w, R0.w;\n" 1263 "MAD R2.w, -R1, R0, R1.z;\n" 1264 "ADD R1.xy, fragment.position, c[7];\n" 1265 "MUL R1.xy, R1, c[5];\n" 1266 "TEX R1, R1, texture[1], 2D;\n" 1267 "ADD R2, R2, -R0;\n" 1268 "DP4 R1.x, R1, c[8];\n" 1269 "MAD result.color, R1.x, R2, R0;\n" 1270 "END\n" 1271 ; 1272 1273 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE = 1274 "!!ARBfp1.0\n" 1275 "PARAM c[10] = { program.local[0..8],\n" 1276 " { 2, 4, 1, 1e-006 } };\n" 1277 "TEMP R0;\n" 1278 "TEMP R1;\n" 1279 "TEMP R2;\n" 1280 "TEMP R3;\n" 1281 "TEMP R4;\n" 1282 "MUL R0.xyz, fragment.position.y, c[3];\n" 1283 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1284 "ADD R0.xyz, R0, c[4];\n" 1285 "RCP R0.z, R0.z;\n" 1286 "MUL R0.xy, R0, R0.z;\n" 1287 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1288 "ADD R0.z, R0, R0.w;\n" 1289 "MUL R0.xy, R0, c[0];\n" 1290 "ADD R0.x, R0, R0.y;\n" 1291 "MUL R0.y, R0.x, c[9].x;\n" 1292 "MOV R0.x, c[9];\n" 1293 "MUL R0.z, -R0, c[1].x;\n" 1294 "MUL R0.z, R0, c[9].y;\n" 1295 "MAD R0.z, R0.y, R0.y, -R0;\n" 1296 "MUL R0.w, R0.x, c[1].x;\n" 1297 "RSQ R0.z, R0.z;\n" 1298 "RCP R0.x, R0.z;\n" 1299 "RCP R0.z, R0.w;\n" 1300 "ADD R0.x, -R0.y, R0;\n" 1301 "MUL R0.x, R0, R0.z;\n" 1302 "TEX R0, R0, texture[2], 1D;\n" 1303 "MAX R1.x, R0.w, c[9].w;\n" 1304 "RCP R1.x, R1.x;\n" 1305 "MAD R1.xyz, -R0, R1.x, c[9].z;\n" 1306 "MAX R2.xyz, R1, c[9].w;\n" 1307 "MUL R1.xy, fragment.position, c[6];\n" 1308 "TEX R1, R1, texture[0], 2D;\n" 1309 "ADD R2.w, -R0, c[9].z;\n" 1310 "MUL R3.xyz, R1, R2.w;\n" 1311 "ADD R2.w, -R1, c[9].z;\n" 1312 "MAD R4.xyz, R0, R2.w, R3;\n" 1313 "MUL R3.xyz, R0.w, R1;\n" 1314 "MUL R2.w, R0, R1;\n" 1315 "MAD R0.xyz, R0, R1.w, R3;\n" 1316 "SGE R0.xyz, R0, R2.w;\n" 1317 "RCP R2.x, R2.x;\n" 1318 "RCP R2.y, R2.y;\n" 1319 "RCP R2.z, R2.z;\n" 1320 "MAD R2.xyz, R3, R2, R4;\n" 1321 "MAD R4.xyz, R0.w, R1.w, R4;\n" 1322 "ADD R4.xyz, R4, -R2;\n" 1323 "MAD R2.xyz, R0, R4, R2;\n" 1324 "ADD R0.z, R0.w, R1.w;\n" 1325 "MAD R2.w, -R0, R1, R0.z;\n" 1326 "ADD R0.xy, fragment.position, c[7];\n" 1327 "MUL R0.xy, R0, c[5];\n" 1328 "TEX R0, R0, texture[1], 2D;\n" 1329 "ADD R2, R2, -R1;\n" 1330 "DP4 R0.x, R0, c[8];\n" 1331 "MAD result.color, R0.x, R2, R1;\n" 1332 "END\n" 1333 ; 1334 1335 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN = 1336 "!!ARBfp1.0\n" 1337 "PARAM c[10] = { program.local[0..8],\n" 1338 " { 2, 4, 1, 9.9999997e-006 } };\n" 1339 "TEMP R0;\n" 1340 "TEMP R1;\n" 1341 "TEMP R2;\n" 1342 "TEMP R3;\n" 1343 "TEMP R4;\n" 1344 "TEMP R5;\n" 1345 "MUL R0.xyz, fragment.position.y, c[3];\n" 1346 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1347 "ADD R0.xyz, R0, c[4];\n" 1348 "RCP R0.z, R0.z;\n" 1349 "MUL R0.xy, R0, R0.z;\n" 1350 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1351 "ADD R0.z, R0, R0.w;\n" 1352 "MUL R0.xy, R0, c[0];\n" 1353 "ADD R0.x, R0, R0.y;\n" 1354 "MUL R0.z, -R0, c[1].x;\n" 1355 "MUL R0.y, R0.x, c[9].x;\n" 1356 "MUL R0.z, R0, c[9].y;\n" 1357 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1358 "RSQ R0.z, R0.x;\n" 1359 "MOV R0.x, c[9];\n" 1360 "MUL R0.w, R0.x, c[1].x;\n" 1361 "RCP R0.z, R0.z;\n" 1362 "ADD R0.x, -R0.y, R0.z;\n" 1363 "RCP R0.y, R0.w;\n" 1364 "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n" 1365 "TEX R1, R0.zwzw, texture[0], 2D;\n" 1366 "MUL R0.x, R0, R0.y;\n" 1367 "TEX R0, R0, texture[2], 1D;\n" 1368 "MUL R2.xyz, R0.w, R1;\n" 1369 "MAD R3.xyz, R0, R1.w, R2;\n" 1370 "MAD R2.xyz, -R0.w, R1.w, R3;\n" 1371 "MUL R4.xyz, R0.w, R2;\n" 1372 "MAX R2.xyz, R0, c[9].w;\n" 1373 "ADD R2.w, -R1, c[9].z;\n" 1374 "MUL R5.xyz, R0, R2.w;\n" 1375 "ADD R3.w, -R0, c[9].z;\n" 1376 "RCP R2.x, R2.x;\n" 1377 "RCP R2.y, R2.y;\n" 1378 "RCP R2.z, R2.z;\n" 1379 "MAD R2.xyz, R4, R2, R5;\n" 1380 "MUL R4.xyz, R1, R3.w;\n" 1381 "MAD R0.xyz, R0, R2.w, R4;\n" 1382 "MUL R2.w, R0, R1;\n" 1383 "MAD R2.xyz, R1, R3.w, R2;\n" 1384 "ADD R2.xyz, R2, -R0;\n" 1385 "SGE R3.xyz, R3, R2.w;\n" 1386 "MAD R2.xyz, R3, R2, R0;\n" 1387 "ADD R0.z, R0.w, R1.w;\n" 1388 "MAD R2.w, -R0, R1, R0.z;\n" 1389 "ADD R0.xy, fragment.position, c[7];\n" 1390 "MUL R0.xy, R0, c[5];\n" 1391 "TEX R0, R0, texture[1], 2D;\n" 1392 "ADD R2, R2, -R1;\n" 1393 "DP4 R0.x, R0, c[8];\n" 1394 "MAD result.color, R0.x, R2, R1;\n" 1395 "END\n" 1396 ; 1397 1398 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT = 1399 "!!ARBfp1.0\n" 1400 "PARAM c[10] = { program.local[0..8],\n" 1401 " { 2, 4, 1 } };\n" 1402 "TEMP R0;\n" 1403 "TEMP R1;\n" 1404 "TEMP R2;\n" 1405 "TEMP R3;\n" 1406 "TEMP R4;\n" 1407 "MUL R0.xyz, fragment.position.y, c[3];\n" 1408 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1409 "ADD R0.xyz, R0, c[4];\n" 1410 "RCP R0.z, R0.z;\n" 1411 "MUL R0.xy, R0, R0.z;\n" 1412 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1413 "ADD R0.z, R0, R0.w;\n" 1414 "MUL R0.xy, R0, c[0];\n" 1415 "ADD R0.x, R0, R0.y;\n" 1416 "MUL R0.y, R0.x, c[9].x;\n" 1417 "MOV R0.x, c[9];\n" 1418 "MUL R0.z, -R0, c[1].x;\n" 1419 "MUL R0.z, R0, c[9].y;\n" 1420 "MAD R0.z, R0.y, R0.y, -R0;\n" 1421 "MUL R1.xy, fragment.position, c[6];\n" 1422 "TEX R1, R1, texture[0], 2D;\n" 1423 "MUL R0.w, R0.x, c[1].x;\n" 1424 "RSQ R0.z, R0.z;\n" 1425 "RCP R0.x, R0.z;\n" 1426 "ADD R2.w, -R1, c[9].z;\n" 1427 "RCP R0.z, R0.w;\n" 1428 "ADD R0.x, -R0.y, R0;\n" 1429 "MUL R0.x, R0, R0.z;\n" 1430 "TEX R0, R0, texture[2], 1D;\n" 1431 "ADD R3.xyz, R0.w, -R0;\n" 1432 "ADD R2.xyz, R1.w, -R1;\n" 1433 "MUL R2.xyz, R2, R3;\n" 1434 "MUL R2.xyz, R2, c[9].x;\n" 1435 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 1436 "MUL R4.xyz, R0, R2.w;\n" 1437 "MAD R2.xyz, R0, R2.w, R2;\n" 1438 "MUL R3.xyz, R0, R1;\n" 1439 "ADD R2.w, -R0, c[9].z;\n" 1440 "MAD R3.xyz, R3, c[9].x, R4;\n" 1441 "MUL R0.xyz, R0, c[9].x;\n" 1442 "SGE R0.xyz, R0, R0.w;\n" 1443 "MAD R3.xyz, R1, R2.w, R3;\n" 1444 "MAD R2.xyz, R1, R2.w, R2;\n" 1445 "ADD R2.xyz, R2, -R3;\n" 1446 "MAD R2.xyz, R0, R2, R3;\n" 1447 "ADD R0.z, R0.w, R1.w;\n" 1448 "MAD R2.w, -R0, R1, R0.z;\n" 1449 "ADD R0.xy, fragment.position, c[7];\n" 1450 "MUL R0.xy, R0, c[5];\n" 1451 "TEX R0, R0, texture[1], 2D;\n" 1452 "ADD R2, R2, -R1;\n" 1453 "DP4 R0.x, R0, c[8];\n" 1454 "MAD result.color, R0.x, R2, R1;\n" 1455 "END\n" 1456 ; 1457 1458 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT = 1459 "!!ARBfp1.0\n" 1460 "PARAM c[11] = { program.local[0..8],\n" 1461 " { 2, 4, 1, 9.9999997e-006 },\n" 1462 " { 16, 12, 3 } };\n" 1463 "TEMP R0;\n" 1464 "TEMP R1;\n" 1465 "TEMP R2;\n" 1466 "TEMP R3;\n" 1467 "TEMP R4;\n" 1468 "TEMP R5;\n" 1469 "TEMP R6;\n" 1470 "MUL R0.xyz, fragment.position.y, c[3];\n" 1471 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1472 "ADD R0.xyz, R0, c[4];\n" 1473 "RCP R0.z, R0.z;\n" 1474 "MUL R0.xy, R0, R0.z;\n" 1475 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1476 "ADD R0.z, R0, R0.w;\n" 1477 "MUL R0.xy, R0, c[0];\n" 1478 "ADD R0.x, R0, R0.y;\n" 1479 "MUL R0.z, -R0, c[1].x;\n" 1480 "MUL R0.y, R0.z, c[9];\n" 1481 "MUL R0.x, R0, c[9];\n" 1482 "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n" 1483 "TEX R1, R0.zwzw, texture[0], 2D;\n" 1484 "MAD R0.y, R0.x, R0.x, -R0;\n" 1485 "RSQ R0.y, R0.y;\n" 1486 "RCP R0.y, R0.y;\n" 1487 "ADD R0.y, -R0.x, R0;\n" 1488 "MOV R0.x, c[9];\n" 1489 "MUL R0.x, R0, c[1];\n" 1490 "MAX R0.z, R1.w, c[9].w;\n" 1491 "RCP R0.z, R0.z;\n" 1492 "MUL R3.xyz, R1, R0.z;\n" 1493 "MAD R4.xyz, R3, c[10].x, -c[10].y;\n" 1494 "RCP R0.x, R0.x;\n" 1495 "MUL R0.x, R0.y, R0;\n" 1496 "TEX R0, R0, texture[2], 1D;\n" 1497 "MAD R2.xyz, R0, c[9].x, -R0.w;\n" 1498 "MAD R4.xyz, R3, R4, c[10].z;\n" 1499 "MUL R5.xyz, R1.w, R2;\n" 1500 "MUL R6.xyz, R5, R4;\n" 1501 "RSQ R2.w, R3.x;\n" 1502 "RCP R4.x, R2.w;\n" 1503 "RSQ R2.w, R3.y;\n" 1504 "RSQ R3.w, R3.z;\n" 1505 "RCP R4.y, R2.w;\n" 1506 "RCP R4.z, R3.w;\n" 1507 "ADD R4.xyz, -R3, R4;\n" 1508 "MUL R6.xyz, R3, R6;\n" 1509 "MUL R4.xyz, R5, R4;\n" 1510 "ADD R3.xyz, -R3, c[9].z;\n" 1511 "MAD R2.xyz, R2, R3, R0.w;\n" 1512 "MUL R3.xyz, R0, c[9].x;\n" 1513 "MAD R5.xyz, R0.w, R1, R6;\n" 1514 "MAD R4.xyz, R0.w, R1, R4;\n" 1515 "ADD R6.xyz, R4, -R5;\n" 1516 "MUL R4.xyz, R1, c[9].y;\n" 1517 "SGE R4.xyz, R4, R1.w;\n" 1518 "MAD R4.xyz, R4, R6, R5;\n" 1519 "MAD R4.xyz, -R1, R2, R4;\n" 1520 "SGE R3.xyz, R3, R0.w;\n" 1521 "MUL R2.xyz, R1, R2;\n" 1522 "ADD R2.w, -R1, c[9].z;\n" 1523 "MAD R2.xyz, R3, R4, R2;\n" 1524 "MAD R2.xyz, R0, R2.w, R2;\n" 1525 "ADD R0.x, -R0.w, c[9].z;\n" 1526 "MAD R2.xyz, R1, R0.x, R2;\n" 1527 "ADD R0.z, R0.w, R1.w;\n" 1528 "MAD R2.w, -R0, R1, R0.z;\n" 1529 "ADD R0.xy, fragment.position, c[7];\n" 1530 "MUL R0.xy, R0, c[5];\n" 1531 "TEX R0, R0, texture[1], 2D;\n" 1532 "ADD R2, R2, -R1;\n" 1533 "DP4 R0.x, R0, c[8];\n" 1534 "MAD result.color, R0.x, R2, R1;\n" 1535 "END\n" 1536 ; 1537 1538 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE = 1539 "!!ARBfp1.0\n" 1540 "PARAM c[10] = { program.local[0..8],\n" 1541 " { 2, 4 } };\n" 1542 "TEMP R0;\n" 1543 "TEMP R1;\n" 1544 "TEMP R2;\n" 1545 "TEMP R3;\n" 1546 "MUL R0.xyz, fragment.position.y, c[3];\n" 1547 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1548 "ADD R0.xyz, R0, c[4];\n" 1549 "RCP R0.z, R0.z;\n" 1550 "MUL R0.xy, R0, R0.z;\n" 1551 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1552 "ADD R0.z, R0, R0.w;\n" 1553 "MUL R0.xy, R0, c[0];\n" 1554 "ADD R0.x, R0, R0.y;\n" 1555 "MUL R0.z, -R0, c[1].x;\n" 1556 "MUL R0.y, R0.x, c[9].x;\n" 1557 "MUL R0.z, R0, c[9].y;\n" 1558 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1559 "RSQ R0.z, R0.x;\n" 1560 "MOV R0.x, c[9];\n" 1561 "MUL R0.x, R0, c[1];\n" 1562 "RCP R0.z, R0.z;\n" 1563 "ADD R0.z, -R0.y, R0;\n" 1564 "RCP R0.w, R0.x;\n" 1565 "MUL R1.x, R0.z, R0.w;\n" 1566 "MUL R0.xy, fragment.position, c[6];\n" 1567 "TEX R0, R0, texture[0], 2D;\n" 1568 "TEX R1, R1, texture[2], 1D;\n" 1569 "ADD R2.xyz, R1, R0;\n" 1570 "MUL R3.xyz, R1.w, R0;\n" 1571 "MUL R1.xyz, R1, R0.w;\n" 1572 "MIN R1.xyz, R1, R3;\n" 1573 "MAD R2.xyz, -R1, c[9].x, R2;\n" 1574 "ADD R1.z, R1.w, R0.w;\n" 1575 "MAD R2.w, -R1, R0, R1.z;\n" 1576 "ADD R1.xy, fragment.position, c[7];\n" 1577 "MUL R1.xy, R1, c[5];\n" 1578 "TEX R1, R1, texture[1], 2D;\n" 1579 "ADD R2, R2, -R0;\n" 1580 "DP4 R1.x, R1, c[8];\n" 1581 "MAD result.color, R1.x, R2, R0;\n" 1582 "END\n" 1583 ; 1584 1585 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION = 1586 "!!ARBfp1.0\n" 1587 "PARAM c[10] = { program.local[0..8],\n" 1588 " { 2, 4, 1 } };\n" 1589 "TEMP R0;\n" 1590 "TEMP R1;\n" 1591 "TEMP R2;\n" 1592 "TEMP R3;\n" 1593 "MUL R0.xyz, fragment.position.y, c[3];\n" 1594 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1595 "ADD R0.xyz, R0, c[4];\n" 1596 "RCP R0.z, R0.z;\n" 1597 "MUL R0.xy, R0, R0.z;\n" 1598 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1599 "ADD R0.z, R0, R0.w;\n" 1600 "MUL R0.xy, R0, c[0];\n" 1601 "ADD R0.x, R0, R0.y;\n" 1602 "MUL R0.z, -R0, c[1].x;\n" 1603 "MUL R0.y, R0.x, c[9].x;\n" 1604 "MUL R0.z, R0, c[9].y;\n" 1605 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1606 "RSQ R0.z, R0.x;\n" 1607 "MOV R0.x, c[9];\n" 1608 "MUL R0.x, R0, c[1];\n" 1609 "RCP R0.z, R0.z;\n" 1610 "ADD R0.z, -R0.y, R0;\n" 1611 "RCP R0.w, R0.x;\n" 1612 "MUL R1.x, R0.z, R0.w;\n" 1613 "MUL R0.xy, fragment.position, c[6];\n" 1614 "TEX R0, R0, texture[0], 2D;\n" 1615 "TEX R1, R1, texture[2], 1D;\n" 1616 "MUL R2.xyz, R1.w, R0;\n" 1617 "MAD R3.xyz, R1, R0.w, R2;\n" 1618 "MUL R2.xyz, R1, R0;\n" 1619 "MAD R2.xyz, -R2, c[9].x, R3;\n" 1620 "ADD R2.w, -R0, c[9].z;\n" 1621 "MAD R1.xyz, R1, R2.w, R2;\n" 1622 "ADD R2.x, -R1.w, c[9].z;\n" 1623 "MAD R2.xyz, R0, R2.x, R1;\n" 1624 "ADD R1.z, R1.w, R0.w;\n" 1625 "MAD R2.w, -R1, R0, R1.z;\n" 1626 "ADD R1.xy, fragment.position, c[7];\n" 1627 "MUL R1.xy, R1, c[5];\n" 1628 "TEX R1, R1, texture[1], 2D;\n" 1629 "ADD R2, R2, -R0;\n" 1630 "DP4 R1.x, R1, c[8];\n" 1631 "MAD result.color, R1.x, R2, R0;\n" 1632 "END\n" 1633 ; 1634 1635 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = 1636 "!!ARBfp1.0\n" 1637 "PARAM c[9] = { program.local[0..7],\n" 1638 " { 2, 4, 1 } };\n" 1639 "TEMP R0;\n" 1640 "TEMP R1;\n" 1641 "TEMP R2;\n" 1642 "TEMP R3;\n" 1643 "MUL R0.xyz, fragment.position.y, c[3];\n" 1644 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1645 "ADD R0.xyz, R0, c[4];\n" 1646 "RCP R0.z, R0.z;\n" 1647 "MUL R0.xy, R0, R0.z;\n" 1648 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1649 "ADD R0.z, R0, R0.w;\n" 1650 "MUL R0.xy, R0, c[0];\n" 1651 "ADD R0.x, R0, R0.y;\n" 1652 "MUL R0.z, -R0, c[1].x;\n" 1653 "MUL R0.y, R0.x, c[8].x;\n" 1654 "MUL R0.z, R0, c[8].y;\n" 1655 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1656 "RSQ R0.x, R0.x;\n" 1657 "RCP R0.z, R0.x;\n" 1658 "ADD R0.y, -R0, R0.z;\n" 1659 "MUL R0.zw, fragment.position.xyxy, c[7].xyxy;\n" 1660 "TEX R1, R0.zwzw, texture[0], 2D;\n" 1661 "MUL R2.xyz, R1, c[5].y;\n" 1662 "MOV R0.x, c[8];\n" 1663 "MUL R0.x, R0, c[1];\n" 1664 "RCP R0.x, R0.x;\n" 1665 "MUL R0.x, R0.y, R0;\n" 1666 "TEX R0, R0, texture[1], 1D;\n" 1667 "MUL R3.xyz, R0.w, R2;\n" 1668 "MUL R2.xyz, R0, c[5].x;\n" 1669 "MAD R2.xyz, R1.w, R2, R3;\n" 1670 "ADD R2.w, -R1, c[8].z;\n" 1671 "MUL R0.xyz, R0, c[6].y;\n" 1672 "MAD R0.xyz, R2.w, R0, R2;\n" 1673 "ADD R2.x, -R0.w, c[8].z;\n" 1674 "MUL R1.xyz, R1, c[6].z;\n" 1675 "MAD result.color.xyz, R2.x, R1, R0;\n" 1676 "MUL R0.x, R0.w, R1.w;\n" 1677 "MUL R0.z, R1.w, R2.x;\n" 1678 "MUL R0.y, R0.w, R2.w;\n" 1679 "DP3 result.color.w, R0, c[6];\n" 1680 "END\n" 1681 ; 1682 1683 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY_NOMASK = 1684 "!!ARBfp1.0\n" 1685 "PARAM c[7] = { program.local[0..5],\n" 1686 " { 2, 4, 1 } };\n" 1687 "TEMP R0;\n" 1688 "TEMP R1;\n" 1689 "TEMP R2;\n" 1690 "MUL R0.xyz, fragment.position.y, c[3];\n" 1691 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1692 "ADD R0.xyz, R0, c[4];\n" 1693 "RCP R0.z, R0.z;\n" 1694 "MUL R0.xy, R0, R0.z;\n" 1695 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1696 "ADD R0.z, R0, R0.w;\n" 1697 "MUL R0.xy, R0, c[0];\n" 1698 "ADD R0.x, R0, R0.y;\n" 1699 "MUL R0.z, -R0, c[1].x;\n" 1700 "MUL R0.y, R0.x, c[6].x;\n" 1701 "MUL R0.z, R0, c[6].y;\n" 1702 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1703 "RSQ R0.x, R0.x;\n" 1704 "RCP R0.z, R0.x;\n" 1705 "ADD R0.y, -R0, R0.z;\n" 1706 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 1707 "TEX R1, R0.zwzw, texture[0], 2D;\n" 1708 "MOV R0.x, c[6];\n" 1709 "MUL R0.x, R0, c[1];\n" 1710 "RCP R0.x, R0.x;\n" 1711 "MUL R0.x, R0.y, R0;\n" 1712 "TEX R0, R0, texture[1], 1D;\n" 1713 "ADD R2.x, -R1.w, c[6].z;\n" 1714 "MUL R2.xyz, R0, R2.x;\n" 1715 "MAD R0.xyz, R0, R1, R2;\n" 1716 "ADD R2.x, R0.w, R1.w;\n" 1717 "ADD R2.y, -R0.w, c[6].z;\n" 1718 "MAD result.color.xyz, R1, R2.y, R0;\n" 1719 "MAD result.color.w, -R0, R1, R2.x;\n" 1720 "END\n" 1721 ; 1722 1723 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN_NOMASK = 1724 "!!ARBfp1.0\n" 1725 "PARAM c[7] = { program.local[0..5],\n" 1726 " { 2, 4 } };\n" 1727 "TEMP R0;\n" 1728 "TEMP R1;\n" 1729 "TEMP R2;\n" 1730 "MUL R0.xyz, fragment.position.y, c[3];\n" 1731 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1732 "ADD R0.xyz, R0, c[4];\n" 1733 "RCP R0.z, R0.z;\n" 1734 "MUL R0.xy, R0, R0.z;\n" 1735 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1736 "ADD R0.z, R0, R0.w;\n" 1737 "MUL R0.xy, R0, c[0];\n" 1738 "ADD R0.x, R0, R0.y;\n" 1739 "MUL R0.z, -R0, c[1].x;\n" 1740 "MUL R0.y, R0.x, c[6].x;\n" 1741 "MUL R0.z, R0, c[6].y;\n" 1742 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1743 "RSQ R0.z, R0.x;\n" 1744 "MOV R0.x, c[6];\n" 1745 "MUL R0.w, R0.x, c[1].x;\n" 1746 "RCP R0.z, R0.z;\n" 1747 "ADD R0.x, -R0.y, R0.z;\n" 1748 "RCP R0.y, R0.w;\n" 1749 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 1750 "TEX R1, R0.zwzw, texture[0], 2D;\n" 1751 "MUL R0.x, R0, R0.y;\n" 1752 "TEX R0, R0, texture[1], 1D;\n" 1753 "ADD R2, R0, R1;\n" 1754 "MAD result.color, -R0, R1, R2;\n" 1755 "END\n" 1756 ; 1757 1758 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY_NOMASK = 1759 "!!ARBfp1.0\n" 1760 "PARAM c[7] = { program.local[0..5],\n" 1761 " { 2, 4, 1 } };\n" 1762 "TEMP R0;\n" 1763 "TEMP R1;\n" 1764 "TEMP R2;\n" 1765 "TEMP R3;\n" 1766 "MUL R0.xyz, fragment.position.y, c[3];\n" 1767 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1768 "ADD R0.xyz, R0, c[4];\n" 1769 "RCP R0.z, R0.z;\n" 1770 "MUL R0.xy, R0, R0.z;\n" 1771 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1772 "ADD R0.z, R0, R0.w;\n" 1773 "MUL R0.xy, R0, c[0];\n" 1774 "ADD R0.x, R0, R0.y;\n" 1775 "MUL R0.y, R0.x, c[6].x;\n" 1776 "MOV R0.x, c[6];\n" 1777 "MUL R0.z, -R0, c[1].x;\n" 1778 "MUL R0.z, R0, c[6].y;\n" 1779 "MAD R0.z, R0.y, R0.y, -R0;\n" 1780 "MUL R1.xy, fragment.position, c[5];\n" 1781 "TEX R1, R1, texture[0], 2D;\n" 1782 "MUL R0.w, R0.x, c[1].x;\n" 1783 "RSQ R0.z, R0.z;\n" 1784 "RCP R0.x, R0.z;\n" 1785 "ADD R2.w, -R1, c[6].z;\n" 1786 "RCP R0.z, R0.w;\n" 1787 "ADD R0.x, -R0.y, R0;\n" 1788 "MUL R0.x, R0, R0.z;\n" 1789 "TEX R0, R0, texture[1], 1D;\n" 1790 "ADD R3.xyz, R0.w, -R0;\n" 1791 "ADD R2.xyz, R1.w, -R1;\n" 1792 "MUL R2.xyz, R2, R3;\n" 1793 "MUL R2.xyz, R2, c[6].x;\n" 1794 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 1795 "MAD R2.xyz, R0, R2.w, R2;\n" 1796 "MUL R3.xyz, R0, R2.w;\n" 1797 "MUL R0.xyz, R0, R1;\n" 1798 "ADD R2.w, -R0, c[6].z;\n" 1799 "MAD R0.xyz, R0, c[6].x, R3;\n" 1800 "MAD R0.xyz, R1, R2.w, R0;\n" 1801 "MAD R2.xyz, R1, R2.w, R2;\n" 1802 "MUL R1.xyz, R1, c[6].x;\n" 1803 "ADD R2.w, R0, R1;\n" 1804 "ADD R2.xyz, R2, -R0;\n" 1805 "SGE R1.xyz, R1, R1.w;\n" 1806 "MAD result.color.xyz, R1, R2, R0;\n" 1807 "MAD result.color.w, -R0, R1, R2;\n" 1808 "END\n" 1809 ; 1810 1811 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN_NOMASK = 1812 "!!ARBfp1.0\n" 1813 "PARAM c[7] = { program.local[0..5],\n" 1814 " { 2, 4, 1 } };\n" 1815 "TEMP R0;\n" 1816 "TEMP R1;\n" 1817 "TEMP R2;\n" 1818 "TEMP R3;\n" 1819 "MUL R0.xyz, fragment.position.y, c[3];\n" 1820 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1821 "ADD R0.xyz, R0, c[4];\n" 1822 "RCP R0.z, R0.z;\n" 1823 "MUL R0.xy, R0, R0.z;\n" 1824 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1825 "ADD R0.z, R0, R0.w;\n" 1826 "MUL R0.xy, R0, c[0];\n" 1827 "ADD R0.x, R0, R0.y;\n" 1828 "MUL R0.z, -R0, c[1].x;\n" 1829 "MUL R0.y, R0.x, c[6].x;\n" 1830 "MUL R0.z, R0, c[6].y;\n" 1831 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1832 "RSQ R0.z, R0.x;\n" 1833 "MOV R0.x, c[6];\n" 1834 "MUL R0.w, R0.x, c[1].x;\n" 1835 "RCP R0.z, R0.z;\n" 1836 "ADD R0.x, -R0.y, R0.z;\n" 1837 "RCP R0.y, R0.w;\n" 1838 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 1839 "TEX R1, R0.zwzw, texture[0], 2D;\n" 1840 "MUL R0.x, R0, R0.y;\n" 1841 "TEX R0, R0, texture[1], 1D;\n" 1842 "MUL R2.xyz, R0, R1.w;\n" 1843 "MUL R3.xyz, R0.w, R1;\n" 1844 "MIN R2.xyz, R2, R3;\n" 1845 "ADD R2.w, -R1, c[6].z;\n" 1846 "MAD R0.xyz, R0, R2.w, R2;\n" 1847 "ADD R2.x, R0.w, R1.w;\n" 1848 "ADD R2.y, -R0.w, c[6].z;\n" 1849 "MAD result.color.xyz, R1, R2.y, R0;\n" 1850 "MAD result.color.w, -R0, R1, R2.x;\n" 1851 "END\n" 1852 ; 1853 1854 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN_NOMASK = 1855 "!!ARBfp1.0\n" 1856 "PARAM c[7] = { program.local[0..5],\n" 1857 " { 2, 4, 1 } };\n" 1858 "TEMP R0;\n" 1859 "TEMP R1;\n" 1860 "TEMP R2;\n" 1861 "TEMP R3;\n" 1862 "MUL R0.xyz, fragment.position.y, c[3];\n" 1863 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1864 "ADD R0.xyz, R0, c[4];\n" 1865 "RCP R0.z, R0.z;\n" 1866 "MUL R0.xy, R0, R0.z;\n" 1867 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1868 "ADD R0.z, R0, R0.w;\n" 1869 "MUL R0.xy, R0, c[0];\n" 1870 "ADD R0.x, R0, R0.y;\n" 1871 "MUL R0.z, -R0, c[1].x;\n" 1872 "MUL R0.y, R0.x, c[6].x;\n" 1873 "MUL R0.z, R0, c[6].y;\n" 1874 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1875 "RSQ R0.z, R0.x;\n" 1876 "MOV R0.x, c[6];\n" 1877 "MUL R0.w, R0.x, c[1].x;\n" 1878 "RCP R0.z, R0.z;\n" 1879 "ADD R0.x, -R0.y, R0.z;\n" 1880 "RCP R0.y, R0.w;\n" 1881 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 1882 "TEX R1, R0.zwzw, texture[0], 2D;\n" 1883 "MUL R0.x, R0, R0.y;\n" 1884 "TEX R0, R0, texture[1], 1D;\n" 1885 "MUL R2.xyz, R0, R1.w;\n" 1886 "MUL R3.xyz, R0.w, R1;\n" 1887 "MAX R2.xyz, R2, R3;\n" 1888 "ADD R2.w, -R1, c[6].z;\n" 1889 "MAD R0.xyz, R0, R2.w, R2;\n" 1890 "ADD R2.x, R0.w, R1.w;\n" 1891 "ADD R2.y, -R0.w, c[6].z;\n" 1892 "MAD result.color.xyz, R1, R2.y, R0;\n" 1893 "MAD result.color.w, -R0, R1, R2.x;\n" 1894 "END\n" 1895 ; 1896 1897 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE_NOMASK = 1898 "!!ARBfp1.0\n" 1899 "PARAM c[7] = { program.local[0..5],\n" 1900 " { 2, 4, 1, 1e-006 } };\n" 1901 "TEMP R0;\n" 1902 "TEMP R1;\n" 1903 "TEMP R2;\n" 1904 "TEMP R3;\n" 1905 "MUL R0.xyz, fragment.position.y, c[3];\n" 1906 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1907 "ADD R0.xyz, R0, c[4];\n" 1908 "RCP R0.z, R0.z;\n" 1909 "MUL R0.xy, R0, R0.z;\n" 1910 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1911 "ADD R0.z, R0, R0.w;\n" 1912 "MUL R0.xy, R0, c[0];\n" 1913 "ADD R0.x, R0, R0.y;\n" 1914 "MUL R0.y, R0.x, c[6].x;\n" 1915 "MOV R0.x, c[6];\n" 1916 "MUL R0.z, -R0, c[1].x;\n" 1917 "MUL R0.z, R0, c[6].y;\n" 1918 "MAD R0.z, R0.y, R0.y, -R0;\n" 1919 "MUL R0.w, R0.x, c[1].x;\n" 1920 "RSQ R0.z, R0.z;\n" 1921 "RCP R0.x, R0.z;\n" 1922 "RCP R0.z, R0.w;\n" 1923 "ADD R0.x, -R0.y, R0;\n" 1924 "MUL R0.x, R0, R0.z;\n" 1925 "TEX R0, R0, texture[1], 1D;\n" 1926 "MAX R1.x, R0.w, c[6].w;\n" 1927 "RCP R1.x, R1.x;\n" 1928 "MAD R1.xyz, -R0, R1.x, c[6].z;\n" 1929 "MAX R2.xyz, R1, c[6].w;\n" 1930 "MUL R1.xy, fragment.position, c[5];\n" 1931 "TEX R1, R1, texture[0], 2D;\n" 1932 "ADD R2.w, -R0, c[6].z;\n" 1933 "MUL R3.xyz, R1, R2.w;\n" 1934 "ADD R2.w, -R1, c[6].z;\n" 1935 "MAD R3.xyz, R0, R2.w, R3;\n" 1936 "MUL R1.xyz, R0.w, R1;\n" 1937 "MAD R0.xyz, R0, R1.w, R1;\n" 1938 "MUL R2.w, R0, R1;\n" 1939 "RCP R2.x, R2.x;\n" 1940 "RCP R2.y, R2.y;\n" 1941 "RCP R2.z, R2.z;\n" 1942 "MAD R2.xyz, R1, R2, R3;\n" 1943 "MAD R3.xyz, R0.w, R1.w, R3;\n" 1944 "ADD R1.x, R0.w, R1.w;\n" 1945 "ADD R3.xyz, R3, -R2;\n" 1946 "SGE R0.xyz, R0, R2.w;\n" 1947 "MAD result.color.xyz, R0, R3, R2;\n" 1948 "MAD result.color.w, -R0, R1, R1.x;\n" 1949 "END\n" 1950 ; 1951 1952 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN_NOMASK = 1953 "!!ARBfp1.0\n" 1954 "PARAM c[7] = { program.local[0..5],\n" 1955 " { 2, 4, 1, 9.9999997e-006 } };\n" 1956 "TEMP R0;\n" 1957 "TEMP R1;\n" 1958 "TEMP R2;\n" 1959 "TEMP R3;\n" 1960 "TEMP R4;\n" 1961 "TEMP R5;\n" 1962 "MUL R0.xyz, fragment.position.y, c[3];\n" 1963 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 1964 "ADD R0.xyz, R0, c[4];\n" 1965 "RCP R0.z, R0.z;\n" 1966 "MUL R0.xy, R0, R0.z;\n" 1967 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 1968 "ADD R0.z, R0, R0.w;\n" 1969 "MUL R0.xy, R0, c[0];\n" 1970 "ADD R0.x, R0, R0.y;\n" 1971 "MUL R0.z, -R0, c[1].x;\n" 1972 "MUL R0.y, R0.x, c[6].x;\n" 1973 "MUL R0.z, R0, c[6].y;\n" 1974 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 1975 "RSQ R0.z, R0.x;\n" 1976 "MOV R0.x, c[6];\n" 1977 "MUL R0.w, R0.x, c[1].x;\n" 1978 "RCP R0.z, R0.z;\n" 1979 "ADD R0.x, -R0.y, R0.z;\n" 1980 "RCP R0.y, R0.w;\n" 1981 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 1982 "TEX R1, R0.zwzw, texture[0], 2D;\n" 1983 "MUL R0.x, R0, R0.y;\n" 1984 "TEX R0, R0, texture[1], 1D;\n" 1985 "MUL R2.xyz, R0.w, R1;\n" 1986 "MAD R3.xyz, R0, R1.w, R2;\n" 1987 "ADD R2.w, -R1, c[6].z;\n" 1988 "MAD R2.xyz, -R0.w, R1.w, R3;\n" 1989 "MUL R4.xyz, R0.w, R2;\n" 1990 "MAX R2.xyz, R0, c[6].w;\n" 1991 "MUL R5.xyz, R0, R2.w;\n" 1992 "ADD R3.w, -R0, c[6].z;\n" 1993 "RCP R2.x, R2.x;\n" 1994 "RCP R2.y, R2.y;\n" 1995 "RCP R2.z, R2.z;\n" 1996 "MAD R2.xyz, R4, R2, R5;\n" 1997 "MUL R4.xyz, R1, R3.w;\n" 1998 "MAD R1.xyz, R1, R3.w, R2;\n" 1999 "MAD R0.xyz, R0, R2.w, R4;\n" 2000 "MUL R2.x, R0.w, R1.w;\n" 2001 "ADD R2.w, R0, R1;\n" 2002 "ADD R1.xyz, R1, -R0;\n" 2003 "SGE R2.xyz, R3, R2.x;\n" 2004 "MAD result.color.xyz, R2, R1, R0;\n" 2005 "MAD result.color.w, -R0, R1, R2;\n" 2006 "END\n" 2007 ; 2008 2009 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT_NOMASK = 2010 "!!ARBfp1.0\n" 2011 "PARAM c[7] = { program.local[0..5],\n" 2012 " { 2, 4, 1 } };\n" 2013 "TEMP R0;\n" 2014 "TEMP R1;\n" 2015 "TEMP R2;\n" 2016 "TEMP R3;\n" 2017 "TEMP R4;\n" 2018 "MUL R0.xyz, fragment.position.y, c[3];\n" 2019 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 2020 "ADD R0.xyz, R0, c[4];\n" 2021 "RCP R0.z, R0.z;\n" 2022 "MUL R0.xy, R0, R0.z;\n" 2023 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 2024 "ADD R0.z, R0, R0.w;\n" 2025 "MUL R0.xy, R0, c[0];\n" 2026 "ADD R0.x, R0, R0.y;\n" 2027 "MUL R0.y, R0.x, c[6].x;\n" 2028 "MOV R0.x, c[6];\n" 2029 "MUL R0.z, -R0, c[1].x;\n" 2030 "MUL R0.z, R0, c[6].y;\n" 2031 "MAD R0.z, R0.y, R0.y, -R0;\n" 2032 "MUL R1.xy, fragment.position, c[5];\n" 2033 "TEX R1, R1, texture[0], 2D;\n" 2034 "MUL R0.w, R0.x, c[1].x;\n" 2035 "RSQ R0.z, R0.z;\n" 2036 "RCP R0.x, R0.z;\n" 2037 "ADD R2.w, -R1, c[6].z;\n" 2038 "RCP R0.z, R0.w;\n" 2039 "ADD R0.x, -R0.y, R0;\n" 2040 "MUL R0.x, R0, R0.z;\n" 2041 "TEX R0, R0, texture[1], 1D;\n" 2042 "ADD R3.xyz, R0.w, -R0;\n" 2043 "ADD R2.xyz, R1.w, -R1;\n" 2044 "MUL R2.xyz, R2, R3;\n" 2045 "MUL R2.xyz, R2, c[6].x;\n" 2046 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 2047 "MUL R4.xyz, R0, R2.w;\n" 2048 "MUL R3.xyz, R0, R1;\n" 2049 "MAD R2.xyz, R0, R2.w, R2;\n" 2050 "ADD R2.w, -R0, c[6].z;\n" 2051 "MUL R0.xyz, R0, c[6].x;\n" 2052 "MAD R2.xyz, R1, R2.w, R2;\n" 2053 "MAD R3.xyz, R3, c[6].x, R4;\n" 2054 "MAD R1.xyz, R1, R2.w, R3;\n" 2055 "ADD R2.w, R0, R1;\n" 2056 "ADD R2.xyz, R2, -R1;\n" 2057 "SGE R0.xyz, R0, R0.w;\n" 2058 "MAD result.color.xyz, R0, R2, R1;\n" 2059 "MAD result.color.w, -R0, R1, R2;\n" 2060 "END\n" 2061 ; 2062 2063 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK = 2064 "!!ARBfp1.0\n" 2065 "PARAM c[8] = { program.local[0..5],\n" 2066 " { 2, 4, 1, 9.9999997e-006 },\n" 2067 " { 16, 12, 3 } };\n" 2068 "TEMP R0;\n" 2069 "TEMP R1;\n" 2070 "TEMP R2;\n" 2071 "TEMP R3;\n" 2072 "TEMP R4;\n" 2073 "TEMP R5;\n" 2074 "TEMP R6;\n" 2075 "MUL R0.xyz, fragment.position.y, c[3];\n" 2076 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 2077 "ADD R0.xyz, R0, c[4];\n" 2078 "RCP R0.z, R0.z;\n" 2079 "MUL R0.xy, R0, R0.z;\n" 2080 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 2081 "ADD R0.z, R0, R0.w;\n" 2082 "MUL R0.xy, R0, c[0];\n" 2083 "ADD R0.x, R0, R0.y;\n" 2084 "MUL R0.z, -R0, c[1].x;\n" 2085 "MUL R0.y, R0.z, c[6];\n" 2086 "MUL R0.x, R0, c[6];\n" 2087 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 2088 "TEX R1, R0.zwzw, texture[0], 2D;\n" 2089 "MAD R0.y, R0.x, R0.x, -R0;\n" 2090 "RSQ R0.y, R0.y;\n" 2091 "RCP R0.y, R0.y;\n" 2092 "ADD R0.y, -R0.x, R0;\n" 2093 "MOV R0.x, c[6];\n" 2094 "MUL R0.x, R0, c[1];\n" 2095 "MAX R0.z, R1.w, c[6].w;\n" 2096 "RCP R0.z, R0.z;\n" 2097 "MUL R3.xyz, R1, R0.z;\n" 2098 "MAD R4.xyz, R3, c[7].x, -c[7].y;\n" 2099 "RCP R0.x, R0.x;\n" 2100 "MUL R0.x, R0.y, R0;\n" 2101 "TEX R0, R0, texture[1], 1D;\n" 2102 "MAD R2.xyz, R0, c[6].x, -R0.w;\n" 2103 "MAD R4.xyz, R3, R4, c[7].z;\n" 2104 "MUL R5.xyz, R1.w, R2;\n" 2105 "MUL R6.xyz, R5, R4;\n" 2106 "RSQ R2.w, R3.x;\n" 2107 "RCP R4.x, R2.w;\n" 2108 "RSQ R2.w, R3.y;\n" 2109 "RSQ R3.w, R3.z;\n" 2110 "RCP R4.y, R2.w;\n" 2111 "RCP R4.z, R3.w;\n" 2112 "ADD R4.xyz, -R3, R4;\n" 2113 "MUL R6.xyz, R3, R6;\n" 2114 "MUL R4.xyz, R5, R4;\n" 2115 "ADD R3.xyz, -R3, c[6].z;\n" 2116 "MAD R2.xyz, R2, R3, R0.w;\n" 2117 "MUL R3.xyz, R0, c[6].x;\n" 2118 "MAD R5.xyz, R0.w, R1, R6;\n" 2119 "MAD R4.xyz, R0.w, R1, R4;\n" 2120 "ADD R6.xyz, R4, -R5;\n" 2121 "MUL R4.xyz, R1, c[6].y;\n" 2122 "SGE R4.xyz, R4, R1.w;\n" 2123 "MAD R4.xyz, R4, R6, R5;\n" 2124 "MAD R4.xyz, -R1, R2, R4;\n" 2125 "MUL R2.xyz, R1, R2;\n" 2126 "SGE R3.xyz, R3, R0.w;\n" 2127 "MAD R2.xyz, R3, R4, R2;\n" 2128 "ADD R2.w, -R1, c[6].z;\n" 2129 "MAD R2.xyz, R0, R2.w, R2;\n" 2130 "ADD R0.x, R0.w, R1.w;\n" 2131 "ADD R0.y, -R0.w, c[6].z;\n" 2132 "MAD result.color.xyz, R1, R0.y, R2;\n" 2133 "MAD result.color.w, -R0, R1, R0.x;\n" 2134 "END\n" 2135 ; 2136 2137 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE_NOMASK = 2138 "!!ARBfp1.0\n" 2139 "PARAM c[7] = { program.local[0..5],\n" 2140 " { 2, 4 } };\n" 2141 "TEMP R0;\n" 2142 "TEMP R1;\n" 2143 "TEMP R2;\n" 2144 "TEMP R3;\n" 2145 "MUL R0.xyz, fragment.position.y, c[3];\n" 2146 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 2147 "ADD R0.xyz, R0, c[4];\n" 2148 "RCP R0.z, R0.z;\n" 2149 "MUL R0.xy, R0, R0.z;\n" 2150 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 2151 "ADD R0.z, R0, R0.w;\n" 2152 "MUL R0.xy, R0, c[0];\n" 2153 "ADD R0.x, R0, R0.y;\n" 2154 "MUL R0.z, -R0, c[1].x;\n" 2155 "MUL R0.y, R0.x, c[6].x;\n" 2156 "MUL R0.z, R0, c[6].y;\n" 2157 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 2158 "RSQ R0.z, R0.x;\n" 2159 "MOV R0.x, c[6];\n" 2160 "MUL R0.w, R0.x, c[1].x;\n" 2161 "RCP R0.z, R0.z;\n" 2162 "ADD R0.x, -R0.y, R0.z;\n" 2163 "RCP R0.y, R0.w;\n" 2164 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 2165 "TEX R1, R0.zwzw, texture[0], 2D;\n" 2166 "MUL R0.x, R0, R0.y;\n" 2167 "TEX R0, R0, texture[1], 1D;\n" 2168 "MUL R2.xyz, R0, R1.w;\n" 2169 "MUL R3.xyz, R0.w, R1;\n" 2170 "ADD R0.xyz, R0, R1;\n" 2171 "MIN R2.xyz, R2, R3;\n" 2172 "ADD R1.x, R0.w, R1.w;\n" 2173 "MAD result.color.xyz, -R2, c[6].x, R0;\n" 2174 "MAD result.color.w, -R0, R1, R1.x;\n" 2175 "END\n" 2176 ; 2177 2178 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION_NOMASK = 2179 "!!ARBfp1.0\n" 2180 "PARAM c[7] = { program.local[0..5],\n" 2181 " { 2, 4, 1 } };\n" 2182 "TEMP R0;\n" 2183 "TEMP R1;\n" 2184 "TEMP R2;\n" 2185 "TEMP R3;\n" 2186 "MUL R0.xyz, fragment.position.y, c[3];\n" 2187 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 2188 "ADD R0.xyz, R0, c[4];\n" 2189 "RCP R0.z, R0.z;\n" 2190 "MUL R0.xy, R0, R0.z;\n" 2191 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 2192 "ADD R0.z, R0, R0.w;\n" 2193 "MUL R0.xy, R0, c[0];\n" 2194 "ADD R0.x, R0, R0.y;\n" 2195 "MUL R0.z, -R0, c[1].x;\n" 2196 "MUL R0.y, R0.x, c[6].x;\n" 2197 "MUL R0.z, R0, c[6].y;\n" 2198 "MAD R0.x, R0.y, R0.y, -R0.z;\n" 2199 "RSQ R0.z, R0.x;\n" 2200 "MOV R0.x, c[6];\n" 2201 "MUL R0.w, R0.x, c[1].x;\n" 2202 "RCP R0.z, R0.z;\n" 2203 "ADD R0.x, -R0.y, R0.z;\n" 2204 "RCP R0.y, R0.w;\n" 2205 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 2206 "TEX R1, R0.zwzw, texture[0], 2D;\n" 2207 "MUL R0.x, R0, R0.y;\n" 2208 "TEX R0, R0, texture[1], 1D;\n" 2209 "MUL R2.xyz, R0.w, R1;\n" 2210 "MAD R3.xyz, R0, R1.w, R2;\n" 2211 "MUL R2.xyz, R0, R1;\n" 2212 "MAD R2.xyz, -R2, c[6].x, R3;\n" 2213 "ADD R2.w, -R1, c[6].z;\n" 2214 "MAD R0.xyz, R0, R2.w, R2;\n" 2215 "ADD R2.x, R0.w, R1.w;\n" 2216 "ADD R2.y, -R0.w, c[6].z;\n" 2217 "MAD result.color.xyz, R1, R2.y, R0;\n" 2218 "MAD result.color.w, -R0, R1, R2.x;\n" 2219 "END\n" 2220 ; 2221 2222 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_MASK = 2223 "!!ARBfp1.0\n" 2224 "PARAM c[9] = { program.local[0..7],\n" 2225 " { 2, 4 } };\n" 2226 "TEMP R0;\n" 2227 "TEMP R1;\n" 2228 "MUL R0.xyz, fragment.position.y, c[3];\n" 2229 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 2230 "ADD R0.xyz, R0, c[4];\n" 2231 "RCP R0.z, R0.z;\n" 2232 "MUL R0.xy, R0, R0.z;\n" 2233 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 2234 "ADD R0.z, R0, R0.w;\n" 2235 "MUL R0.xy, R0, c[0];\n" 2236 "ADD R0.x, R0, R0.y;\n" 2237 "MUL R0.z, -R0, c[1].x;\n" 2238 "MUL R0.y, R0.z, c[8];\n" 2239 "MUL R0.x, R0, c[8];\n" 2240 "MAD R0.y, R0.x, R0.x, -R0;\n" 2241 "RSQ R0.y, R0.y;\n" 2242 "RCP R0.y, R0.y;\n" 2243 "ADD R1.x, -R0, R0.y;\n" 2244 "MOV R0.x, c[8];\n" 2245 "MUL R0.x, R0, c[1];\n" 2246 "RCP R1.y, R0.x;\n" 2247 "ADD R0.zw, fragment.position.xyxy, c[6].xyxy;\n" 2248 "MUL R0.zw, R0, c[5].xyxy;\n" 2249 "TEX R0, R0.zwzw, texture[0], 2D;\n" 2250 "MUL R1.x, R1, R1.y;\n" 2251 "DP4 R1.y, R0, c[7];\n" 2252 "TEX R0, R1, texture[1], 1D;\n" 2253 "MUL result.color, R0, R1.y;\n" 2254 "END\n" 2255 ; 2256 2257 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_NOMASK = 2258 "!!ARBfp1.0\n" 2259 "PARAM c[6] = { program.local[0..4],\n" 2260 " { 2, 4 } };\n" 2261 "TEMP R0;\n" 2262 "MUL R0.xyz, fragment.position.y, c[3];\n" 2263 "MAD R0.xyz, fragment.position.x, c[2], R0;\n" 2264 "ADD R0.xyz, R0, c[4];\n" 2265 "RCP R0.z, R0.z;\n" 2266 "MUL R0.xy, R0, R0.z;\n" 2267 "MUL R0.zw, R0.xyxy, R0.xyxy;\n" 2268 "MUL R0.xy, R0, c[0];\n" 2269 "ADD R0.z, R0, R0.w;\n" 2270 "ADD R0.x, R0, R0.y;\n" 2271 "MUL R0.z, -R0, c[1].x;\n" 2272 "MUL R0.y, R0.z, c[5];\n" 2273 "MUL R0.x, R0, c[5];\n" 2274 "MAD R0.z, R0.x, R0.x, -R0.y;\n" 2275 "MOV R0.y, c[5].x;\n" 2276 "RSQ R0.z, R0.z;\n" 2277 "MUL R0.w, R0.y, c[1].x;\n" 2278 "RCP R0.y, R0.z;\n" 2279 "RCP R0.z, R0.w;\n" 2280 "ADD R0.x, -R0, R0.y;\n" 2281 "MUL R0.x, R0, R0.z;\n" 2282 "TEX result.color, R0, texture[0], 1D;\n" 2283 "END\n" 2284 ; 2285 2286 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = 2287 "!!ARBfp1.0\n" 2288 "PARAM c[13] = { program.local[0..9],\n" 2289 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 2290 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 2291 " { 0.33299461, 0.99999559, 1 } };\n" 2292 "TEMP R0;\n" 2293 "TEMP R1;\n" 2294 "TEMP R2;\n" 2295 "TEMP R3;\n" 2296 "MUL R0.xyz, fragment.position.y, c[2];\n" 2297 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 2298 "ADD R0.xyz, R0, c[3];\n" 2299 "RCP R0.z, R0.z;\n" 2300 "MUL R0.xy, R0, R0.z;\n" 2301 "ABS R0.z, R0.x;\n" 2302 "ABS R0.w, R0.y;\n" 2303 "ADD R0.w, R0, -R0.z;\n" 2304 "ADD R1.x, R0.y, c[10].y;\n" 2305 "ABS R0.w, R0;\n" 2306 "CMP R0.y, -R0.w, R0, R1.x;\n" 2307 "ABS R0.w, -R0.y;\n" 2308 "MAX R1.x, R0.z, R0.w;\n" 2309 "RCP R1.y, R1.x;\n" 2310 "MIN R1.x, R0.z, R0.w;\n" 2311 "MUL R1.x, R1, R1.y;\n" 2312 "MUL R1.y, R1.x, R1.x;\n" 2313 "MAD R1.z, R1.y, c[11].x, c[11].y;\n" 2314 "MAD R1.z, R1, R1.y, -c[11];\n" 2315 "MAD R1.z, R1, R1.y, c[11].w;\n" 2316 "MAD R1.z, R1, R1.y, -c[12].x;\n" 2317 "MAD R1.y, R1.z, R1, c[12];\n" 2318 "MUL R1.x, R1.y, R1;\n" 2319 "ADD R1.y, -R1.x, c[10].w;\n" 2320 "ADD R0.z, -R0, R0.w;\n" 2321 "CMP R0.z, -R0, R1.y, R1.x;\n" 2322 "ADD R0.w, -R0.z, c[10].z;\n" 2323 "CMP R0.x, R0, R0.w, R0.z;\n" 2324 "CMP R0.x, -R0.y, -R0, R0;\n" 2325 "ADD R0.x, R0, c[0];\n" 2326 "MUL R1.x, R0, c[10];\n" 2327 "FLR R1.y, R1.x;\n" 2328 "MUL R0.xy, fragment.position, c[7];\n" 2329 "TEX R0, R0, texture[0], 2D;\n" 2330 "ADD R1.x, R1, -R1.y;\n" 2331 "TEX R1, R1, texture[2], 1D;\n" 2332 "MUL R2.xyz, R0, c[4].y;\n" 2333 "MUL R3.xyz, R1.w, R2;\n" 2334 "MUL R2.xyz, R1, c[4].x;\n" 2335 "MAD R2.xyz, R0.w, R2, R3;\n" 2336 "ADD R3.xy, fragment.position, c[8];\n" 2337 "ADD R2.w, -R0, c[12].z;\n" 2338 "MUL R1.xyz, R1, c[5].y;\n" 2339 "MAD R2.xyz, R2.w, R1, R2;\n" 2340 "MUL R1.xyz, R0, c[5].z;\n" 2341 "ADD R3.z, -R1.w, c[12];\n" 2342 "MAD R2.xyz, R3.z, R1, R2;\n" 2343 "MUL R1.y, R1.w, R2.w;\n" 2344 "MUL R1.x, R1.w, R0.w;\n" 2345 "MUL R1.z, R0.w, R3;\n" 2346 "DP3 R2.w, R1, c[5];\n" 2347 "MUL R3.xy, R3, c[6];\n" 2348 "TEX R1, R3, texture[1], 2D;\n" 2349 "ADD R2, R2, -R0;\n" 2350 "DP4 R1.x, R1, c[9];\n" 2351 "MAD result.color, R1.x, R2, R0;\n" 2352 "END\n" 2353 ; 2354 2355 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY = 2356 "!!ARBfp1.0\n" 2357 "PARAM c[11] = { program.local[0..7],\n" 2358 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 2359 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 2360 " { 0.33299461, 0.99999559, 1 } };\n" 2361 "TEMP R0;\n" 2362 "TEMP R1;\n" 2363 "TEMP R2;\n" 2364 "MUL R0.xyz, fragment.position.y, c[2];\n" 2365 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 2366 "ADD R0.xyz, R0, c[3];\n" 2367 "RCP R0.z, R0.z;\n" 2368 "MUL R0.xy, R0, R0.z;\n" 2369 "ABS R0.z, R0.x;\n" 2370 "ABS R0.w, R0.y;\n" 2371 "ADD R0.w, R0, -R0.z;\n" 2372 "ADD R1.x, R0.y, c[8].y;\n" 2373 "ABS R0.w, R0;\n" 2374 "CMP R0.y, -R0.w, R0, R1.x;\n" 2375 "ABS R0.w, -R0.y;\n" 2376 "MAX R1.x, R0.z, R0.w;\n" 2377 "RCP R1.y, R1.x;\n" 2378 "MIN R1.x, R0.z, R0.w;\n" 2379 "MUL R1.x, R1, R1.y;\n" 2380 "MUL R1.y, R1.x, R1.x;\n" 2381 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" 2382 "MAD R1.z, R1, R1.y, -c[9];\n" 2383 "MAD R1.z, R1, R1.y, c[9].w;\n" 2384 "MAD R1.z, R1, R1.y, -c[10].x;\n" 2385 "MAD R1.y, R1.z, R1, c[10];\n" 2386 "MUL R1.x, R1.y, R1;\n" 2387 "ADD R1.y, -R1.x, c[8].w;\n" 2388 "ADD R0.z, -R0, R0.w;\n" 2389 "CMP R0.z, -R0, R1.y, R1.x;\n" 2390 "ADD R0.w, -R0.z, c[8].z;\n" 2391 "CMP R0.x, R0, R0.w, R0.z;\n" 2392 "CMP R0.x, -R0.y, -R0, R0;\n" 2393 "ADD R0.x, R0, c[0];\n" 2394 "MUL R1.x, R0, c[8];\n" 2395 "FLR R1.y, R1.x;\n" 2396 "MUL R0.xy, fragment.position, c[5];\n" 2397 "TEX R0, R0, texture[0], 2D;\n" 2398 "ADD R1.x, R1, -R1.y;\n" 2399 "TEX R1, R1, texture[2], 1D;\n" 2400 "ADD R2.x, -R0.w, c[10].z;\n" 2401 "MUL R2.xyz, R1, R2.x;\n" 2402 "MAD R1.xyz, R1, R0, R2;\n" 2403 "ADD R2.x, -R1.w, c[10].z;\n" 2404 "MAD R2.xyz, R0, R2.x, R1;\n" 2405 "ADD R1.z, R1.w, R0.w;\n" 2406 "MAD R2.w, -R1, R0, R1.z;\n" 2407 "ADD R1.xy, fragment.position, c[6];\n" 2408 "MUL R1.xy, R1, c[4];\n" 2409 "TEX R1, R1, texture[1], 2D;\n" 2410 "ADD R2, R2, -R0;\n" 2411 "DP4 R1.x, R1, c[7];\n" 2412 "MAD result.color, R1.x, R2, R0;\n" 2413 "END\n" 2414 ; 2415 2416 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN = 2417 "!!ARBfp1.0\n" 2418 "PARAM c[11] = { program.local[0..7],\n" 2419 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 2420 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 2421 " { 0.33299461, 0.99999559 } };\n" 2422 "TEMP R0;\n" 2423 "TEMP R1;\n" 2424 "TEMP R2;\n" 2425 "TEMP R3;\n" 2426 "MUL R0.xyz, fragment.position.y, c[2];\n" 2427 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 2428 "ADD R0.xyz, R0, c[3];\n" 2429 "RCP R0.z, R0.z;\n" 2430 "MUL R0.xy, R0, R0.z;\n" 2431 "ADD R3.xy, fragment.position, c[6];\n" 2432 "ABS R0.z, R0.x;\n" 2433 "ABS R0.w, R0.y;\n" 2434 "ADD R0.w, R0, -R0.z;\n" 2435 "ADD R1.x, R0.y, c[8].y;\n" 2436 "ABS R0.w, R0;\n" 2437 "CMP R0.y, -R0.w, R0, R1.x;\n" 2438 "ABS R0.w, -R0.y;\n" 2439 "MAX R1.x, R0.z, R0.w;\n" 2440 "RCP R1.y, R1.x;\n" 2441 "MIN R1.x, R0.z, R0.w;\n" 2442 "MUL R1.x, R1, R1.y;\n" 2443 "MUL R1.y, R1.x, R1.x;\n" 2444 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" 2445 "MAD R1.z, R1, R1.y, -c[9];\n" 2446 "MAD R1.z, R1, R1.y, c[9].w;\n" 2447 "MAD R1.z, R1, R1.y, -c[10].x;\n" 2448 "MAD R1.y, R1.z, R1, c[10];\n" 2449 "MUL R1.x, R1.y, R1;\n" 2450 "ADD R0.z, -R0, R0.w;\n" 2451 "ADD R1.y, -R1.x, c[8].w;\n" 2452 "CMP R0.z, -R0, R1.y, R1.x;\n" 2453 "ADD R0.w, -R0.z, c[8].z;\n" 2454 "CMP R0.x, R0, R0.w, R0.z;\n" 2455 "CMP R0.x, -R0.y, -R0, R0;\n" 2456 "ADD R0.x, R0, c[0];\n" 2457 "MUL R0.x, R0, c[8];\n" 2458 "FLR R0.y, R0.x;\n" 2459 "ADD R0.z, R0.x, -R0.y;\n" 2460 "TEX R1, R0.z, texture[2], 1D;\n" 2461 "MUL R0.xy, fragment.position, c[5];\n" 2462 "TEX R0, R0, texture[0], 2D;\n" 2463 "ADD R2, R1, R0;\n" 2464 "MAD R2, -R1, R0, R2;\n" 2465 "MUL R3.xy, R3, c[4];\n" 2466 "TEX R1, R3, texture[1], 2D;\n" 2467 "ADD R2, R2, -R0;\n" 2468 "DP4 R1.x, R1, c[7];\n" 2469 "MAD result.color, R1.x, R2, R0;\n" 2470 "END\n" 2471 ; 2472 2473 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY = 2474 "!!ARBfp1.0\n" 2475 "PARAM c[11] = { program.local[0..7],\n" 2476 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" 2477 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" 2478 " { 3.141593, 0.15915494, 2, 1 } };\n" 2479 "TEMP R0;\n" 2480 "TEMP R1;\n" 2481 "TEMP R2;\n" 2482 "TEMP R3;\n" 2483 "TEMP R4;\n" 2484 "MUL R0.xyz, fragment.position.y, c[2];\n" 2485 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 2486 "ADD R0.xyz, R0, c[3];\n" 2487 "RCP R0.z, R0.z;\n" 2488 "MUL R0.xy, R0, R0.z;\n" 2489 "ABS R0.z, R0.x;\n" 2490 "ABS R0.w, R0.y;\n" 2491 "ADD R0.w, R0, -R0.z;\n" 2492 "ADD R1.x, R0.y, c[8];\n" 2493 "ABS R0.w, R0;\n" 2494 "CMP R0.y, -R0.w, R0, R1.x;\n" 2495 "ABS R0.w, -R0.y;\n" 2496 "MAX R1.x, R0.z, R0.w;\n" 2497 "RCP R1.y, R1.x;\n" 2498 "MIN R1.x, R0.z, R0.w;\n" 2499 "MUL R1.x, R1, R1.y;\n" 2500 "MUL R1.y, R1.x, R1.x;\n" 2501 "MAD R1.z, R1.y, c[8].y, c[8];\n" 2502 "MAD R1.z, R1, R1.y, -c[8].w;\n" 2503 "MAD R1.z, R1, R1.y, c[9].x;\n" 2504 "MAD R1.z, R1, R1.y, -c[9].y;\n" 2505 "MAD R1.y, R1.z, R1, c[9].z;\n" 2506 "MUL R1.x, R1.y, R1;\n" 2507 "ADD R0.z, -R0, R0.w;\n" 2508 "ADD R1.y, -R1.x, c[9].w;\n" 2509 "CMP R0.z, -R0, R1.y, R1.x;\n" 2510 "ADD R0.w, -R0.z, c[10].x;\n" 2511 "CMP R0.x, R0, R0.w, R0.z;\n" 2512 "CMP R0.x, -R0.y, -R0, R0;\n" 2513 "ADD R0.x, R0, c[0];\n" 2514 "MUL R0.x, R0, c[10].y;\n" 2515 "FLR R0.y, R0.x;\n" 2516 "ADD R0.x, R0, -R0.y;\n" 2517 "TEX R0, R0, texture[2], 1D;\n" 2518 "MUL R1.xy, fragment.position, c[5];\n" 2519 "TEX R1, R1, texture[0], 2D;\n" 2520 "ADD R2.w, -R1, c[10];\n" 2521 "ADD R3.xyz, R0.w, -R0;\n" 2522 "ADD R2.xyz, R1.w, -R1;\n" 2523 "MUL R2.xyz, R2, R3;\n" 2524 "MUL R2.xyz, R2, c[10].z;\n" 2525 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 2526 "MUL R4.xyz, R0, R2.w;\n" 2527 "MUL R3.xyz, R0, R1;\n" 2528 "MAD R0.xyz, R0, R2.w, R2;\n" 2529 "ADD R2.x, -R0.w, c[10].w;\n" 2530 "MAD R3.xyz, R3, c[10].z, R4;\n" 2531 "MAD R3.xyz, R1, R2.x, R3;\n" 2532 "MAD R0.xyz, R1, R2.x, R0;\n" 2533 "MUL R2.xyz, R1, c[10].z;\n" 2534 "ADD R0.xyz, R0, -R3;\n" 2535 "SGE R2.xyz, R2, R1.w;\n" 2536 "MAD R2.xyz, R2, R0, R3;\n" 2537 "ADD R0.z, R0.w, R1.w;\n" 2538 "MAD R2.w, -R0, R1, R0.z;\n" 2539 "ADD R0.xy, fragment.position, c[6];\n" 2540 "MUL R0.xy, R0, c[4];\n" 2541 "TEX R0, R0, texture[1], 2D;\n" 2542 "ADD R2, R2, -R1;\n" 2543 "DP4 R0.x, R0, c[7];\n" 2544 "MAD result.color, R0.x, R2, R1;\n" 2545 "END\n" 2546 ; 2547 2548 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN = 2549 "!!ARBfp1.0\n" 2550 "PARAM c[11] = { program.local[0..7],\n" 2551 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 2552 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 2553 " { 0.33299461, 0.99999559, 1 } };\n" 2554 "TEMP R0;\n" 2555 "TEMP R1;\n" 2556 "TEMP R2;\n" 2557 "TEMP R3;\n" 2558 "MUL R0.xyz, fragment.position.y, c[2];\n" 2559 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 2560 "ADD R0.xyz, R0, c[3];\n" 2561 "RCP R0.z, R0.z;\n" 2562 "MUL R0.xy, R0, R0.z;\n" 2563 "ABS R0.z, R0.x;\n" 2564 "ABS R0.w, R0.y;\n" 2565 "ADD R0.w, R0, -R0.z;\n" 2566 "ADD R1.x, R0.y, c[8].y;\n" 2567 "ABS R0.w, R0;\n" 2568 "CMP R0.y, -R0.w, R0, R1.x;\n" 2569 "ABS R0.w, -R0.y;\n" 2570 "MAX R1.x, R0.z, R0.w;\n" 2571 "RCP R1.y, R1.x;\n" 2572 "MIN R1.x, R0.z, R0.w;\n" 2573 "MUL R1.x, R1, R1.y;\n" 2574 "MUL R1.y, R1.x, R1.x;\n" 2575 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" 2576 "MAD R1.z, R1, R1.y, -c[9];\n" 2577 "MAD R1.z, R1, R1.y, c[9].w;\n" 2578 "MAD R1.z, R1, R1.y, -c[10].x;\n" 2579 "MAD R1.y, R1.z, R1, c[10];\n" 2580 "MUL R1.x, R1.y, R1;\n" 2581 "ADD R1.y, -R1.x, c[8].w;\n" 2582 "ADD R0.z, -R0, R0.w;\n" 2583 "CMP R0.z, -R0, R1.y, R1.x;\n" 2584 "ADD R0.w, -R0.z, c[8].z;\n" 2585 "CMP R0.x, R0, R0.w, R0.z;\n" 2586 "CMP R0.x, -R0.y, -R0, R0;\n" 2587 "ADD R0.x, R0, c[0];\n" 2588 "MUL R0.z, R0.x, c[8].x;\n" 2589 "FLR R0.w, R0.z;\n" 2590 "ADD R1.x, R0.z, -R0.w;\n" 2591 "MUL R0.xy, fragment.position, c[5];\n" 2592 "TEX R0, R0, texture[0], 2D;\n" 2593 "TEX R1, R1, texture[2], 1D;\n" 2594 "MUL R3.xyz, R1.w, R0;\n" 2595 "MUL R2.xyz, R1, R0.w;\n" 2596 "MIN R2.xyz, R2, R3;\n" 2597 "ADD R2.w, -R0, c[10].z;\n" 2598 "MAD R1.xyz, R1, R2.w, R2;\n" 2599 "ADD R2.x, -R1.w, c[10].z;\n" 2600 "MAD R2.xyz, R0, R2.x, R1;\n" 2601 "ADD R1.z, R1.w, R0.w;\n" 2602 "MAD R2.w, -R1, R0, R1.z;\n" 2603 "ADD R1.xy, fragment.position, c[6];\n" 2604 "MUL R1.xy, R1, c[4];\n" 2605 "TEX R1, R1, texture[1], 2D;\n" 2606 "ADD R2, R2, -R0;\n" 2607 "DP4 R1.x, R1, c[7];\n" 2608 "MAD result.color, R1.x, R2, R0;\n" 2609 "END\n" 2610 ; 2611 2612 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN = 2613 "!!ARBfp1.0\n" 2614 "PARAM c[11] = { program.local[0..7],\n" 2615 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 2616 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 2617 " { 0.33299461, 0.99999559, 1 } };\n" 2618 "TEMP R0;\n" 2619 "TEMP R1;\n" 2620 "TEMP R2;\n" 2621 "TEMP R3;\n" 2622 "MUL R0.xyz, fragment.position.y, c[2];\n" 2623 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 2624 "ADD R0.xyz, R0, c[3];\n" 2625 "RCP R0.z, R0.z;\n" 2626 "MUL R0.xy, R0, R0.z;\n" 2627 "ABS R0.z, R0.x;\n" 2628 "ABS R0.w, R0.y;\n" 2629 "ADD R0.w, R0, -R0.z;\n" 2630 "ADD R1.x, R0.y, c[8].y;\n" 2631 "ABS R0.w, R0;\n" 2632 "CMP R0.y, -R0.w, R0, R1.x;\n" 2633 "ABS R0.w, -R0.y;\n" 2634 "MAX R1.x, R0.z, R0.w;\n" 2635 "RCP R1.y, R1.x;\n" 2636 "MIN R1.x, R0.z, R0.w;\n" 2637 "MUL R1.x, R1, R1.y;\n" 2638 "MUL R1.y, R1.x, R1.x;\n" 2639 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" 2640 "MAD R1.z, R1, R1.y, -c[9];\n" 2641 "MAD R1.z, R1, R1.y, c[9].w;\n" 2642 "MAD R1.z, R1, R1.y, -c[10].x;\n" 2643 "MAD R1.y, R1.z, R1, c[10];\n" 2644 "MUL R1.x, R1.y, R1;\n" 2645 "ADD R1.y, -R1.x, c[8].w;\n" 2646 "ADD R0.z, -R0, R0.w;\n" 2647 "CMP R0.z, -R0, R1.y, R1.x;\n" 2648 "ADD R0.w, -R0.z, c[8].z;\n" 2649 "CMP R0.x, R0, R0.w, R0.z;\n" 2650 "CMP R0.x, -R0.y, -R0, R0;\n" 2651 "ADD R0.x, R0, c[0];\n" 2652 "MUL R0.z, R0.x, c[8].x;\n" 2653 "FLR R0.w, R0.z;\n" 2654 "ADD R1.x, R0.z, -R0.w;\n" 2655 "MUL R0.xy, fragment.position, c[5];\n" 2656 "TEX R0, R0, texture[0], 2D;\n" 2657 "TEX R1, R1, texture[2], 1D;\n" 2658 "MUL R3.xyz, R1.w, R0;\n" 2659 "MUL R2.xyz, R1, R0.w;\n" 2660 "MAX R2.xyz, R2, R3;\n" 2661 "ADD R2.w, -R0, c[10].z;\n" 2662 "MAD R1.xyz, R1, R2.w, R2;\n" 2663 "ADD R2.x, -R1.w, c[10].z;\n" 2664 "MAD R2.xyz, R0, R2.x, R1;\n" 2665 "ADD R1.z, R1.w, R0.w;\n" 2666 "MAD R2.w, -R1, R0, R1.z;\n" 2667 "ADD R1.xy, fragment.position, c[6];\n" 2668 "MUL R1.xy, R1, c[4];\n" 2669 "TEX R1, R1, texture[1], 2D;\n" 2670 "ADD R2, R2, -R0;\n" 2671 "DP4 R1.x, R1, c[7];\n" 2672 "MAD result.color, R1.x, R2, R0;\n" 2673 "END\n" 2674 ; 2675 2676 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE = 2677 "!!ARBfp1.0\n" 2678 "PARAM c[11] = { program.local[0..7],\n" 2679 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" 2680 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" 2681 " { 3.141593, 0.15915494, 1, 1e-006 } };\n" 2682 "TEMP R0;\n" 2683 "TEMP R1;\n" 2684 "TEMP R2;\n" 2685 "TEMP R3;\n" 2686 "TEMP R4;\n" 2687 "MUL R0.xyz, fragment.position.y, c[2];\n" 2688 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 2689 "ADD R0.xyz, R0, c[3];\n" 2690 "RCP R0.z, R0.z;\n" 2691 "MUL R0.xy, R0, R0.z;\n" 2692 "ABS R0.z, R0.x;\n" 2693 "ABS R0.w, R0.y;\n" 2694 "ADD R0.w, R0, -R0.z;\n" 2695 "ADD R1.x, R0.y, c[8];\n" 2696 "ABS R0.w, R0;\n" 2697 "CMP R0.y, -R0.w, R0, R1.x;\n" 2698 "ABS R0.w, -R0.y;\n" 2699 "MAX R1.x, R0.z, R0.w;\n" 2700 "RCP R1.y, R1.x;\n" 2701 "MIN R1.x, R0.z, R0.w;\n" 2702 "MUL R1.x, R1, R1.y;\n" 2703 "MUL R1.y, R1.x, R1.x;\n" 2704 "MAD R1.z, R1.y, c[8].y, c[8];\n" 2705 "MAD R1.z, R1, R1.y, -c[8].w;\n" 2706 "MAD R1.z, R1, R1.y, c[9].x;\n" 2707 "MAD R1.z, R1, R1.y, -c[9].y;\n" 2708 "MAD R1.y, R1.z, R1, c[9].z;\n" 2709 "MUL R1.x, R1.y, R1;\n" 2710 "ADD R1.y, -R1.x, c[9].w;\n" 2711 "ADD R0.z, -R0, R0.w;\n" 2712 "CMP R0.z, -R0, R1.y, R1.x;\n" 2713 "ADD R0.w, -R0.z, c[10].x;\n" 2714 "CMP R0.x, R0, R0.w, R0.z;\n" 2715 "CMP R0.x, -R0.y, -R0, R0;\n" 2716 "ADD R0.x, R0, c[0];\n" 2717 "MUL R0.x, R0, c[10].y;\n" 2718 "FLR R0.y, R0.x;\n" 2719 "ADD R0.x, R0, -R0.y;\n" 2720 "TEX R0, R0, texture[2], 1D;\n" 2721 "MAX R1.x, R0.w, c[10].w;\n" 2722 "RCP R1.x, R1.x;\n" 2723 "MAD R1.xyz, -R0, R1.x, c[10].z;\n" 2724 "MAX R2.xyz, R1, c[10].w;\n" 2725 "MUL R1.xy, fragment.position, c[5];\n" 2726 "TEX R1, R1, texture[0], 2D;\n" 2727 "ADD R2.w, -R0, c[10].z;\n" 2728 "MUL R3.xyz, R1, R2.w;\n" 2729 "ADD R2.w, -R1, c[10].z;\n" 2730 "MAD R4.xyz, R0, R2.w, R3;\n" 2731 "MUL R3.xyz, R0.w, R1;\n" 2732 "MUL R2.w, R0, R1;\n" 2733 "MAD R0.xyz, R0, R1.w, R3;\n" 2734 "SGE R0.xyz, R0, R2.w;\n" 2735 "RCP R2.x, R2.x;\n" 2736 "RCP R2.y, R2.y;\n" 2737 "RCP R2.z, R2.z;\n" 2738 "MAD R2.xyz, R3, R2, R4;\n" 2739 "MAD R4.xyz, R0.w, R1.w, R4;\n" 2740 "ADD R4.xyz, R4, -R2;\n" 2741 "MAD R2.xyz, R0, R4, R2;\n" 2742 "ADD R0.z, R0.w, R1.w;\n" 2743 "MAD R2.w, -R0, R1, R0.z;\n" 2744 "ADD R0.xy, fragment.position, c[6];\n" 2745 "MUL R0.xy, R0, c[4];\n" 2746 "TEX R0, R0, texture[1], 2D;\n" 2747 "ADD R2, R2, -R1;\n" 2748 "DP4 R0.x, R0, c[7];\n" 2749 "MAD result.color, R0.x, R2, R1;\n" 2750 "END\n" 2751 ; 2752 2753 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN = 2754 "!!ARBfp1.0\n" 2755 "PARAM c[11] = { program.local[0..7],\n" 2756 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" 2757 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" 2758 " { 3.141593, 0.15915494, 1, 9.9999997e-006 } };\n" 2759 "TEMP R0;\n" 2760 "TEMP R1;\n" 2761 "TEMP R2;\n" 2762 "TEMP R3;\n" 2763 "TEMP R4;\n" 2764 "TEMP R5;\n" 2765 "MUL R0.xyz, fragment.position.y, c[2];\n" 2766 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 2767 "ADD R0.xyz, R0, c[3];\n" 2768 "RCP R0.z, R0.z;\n" 2769 "MUL R0.xy, R0, R0.z;\n" 2770 "ABS R0.w, R0.x;\n" 2771 "ABS R0.z, R0.y;\n" 2772 "ADD R0.z, R0, -R0.w;\n" 2773 "ADD R1.x, R0.y, c[8];\n" 2774 "ABS R0.z, R0;\n" 2775 "CMP R0.y, -R0.z, R0, R1.x;\n" 2776 "ABS R0.z, -R0.y;\n" 2777 "MAX R1.x, R0.w, R0.z;\n" 2778 "RCP R1.y, R1.x;\n" 2779 "MIN R1.x, R0.w, R0.z;\n" 2780 "MUL R1.x, R1, R1.y;\n" 2781 "MUL R1.y, R1.x, R1.x;\n" 2782 "MAD R1.z, R1.y, c[8].y, c[8];\n" 2783 "MAD R1.z, R1, R1.y, -c[8].w;\n" 2784 "MAD R1.z, R1, R1.y, c[9].x;\n" 2785 "MAD R1.z, R1, R1.y, -c[9].y;\n" 2786 "MAD R1.y, R1.z, R1, c[9].z;\n" 2787 "MUL R1.x, R1.y, R1;\n" 2788 "ADD R1.y, -R1.x, c[9].w;\n" 2789 "ADD R0.z, -R0.w, R0;\n" 2790 "CMP R0.z, -R0, R1.y, R1.x;\n" 2791 "ADD R0.w, -R0.z, c[10].x;\n" 2792 "CMP R0.x, R0, R0.w, R0.z;\n" 2793 "CMP R0.x, -R0.y, -R0, R0;\n" 2794 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 2795 "TEX R1, R0.zwzw, texture[0], 2D;\n" 2796 "ADD R0.x, R0, c[0];\n" 2797 "MUL R0.x, R0, c[10].y;\n" 2798 "FLR R0.y, R0.x;\n" 2799 "ADD R0.x, R0, -R0.y;\n" 2800 "TEX R0, R0, texture[2], 1D;\n" 2801 "MUL R2.xyz, R0.w, R1;\n" 2802 "MAD R3.xyz, R0, R1.w, R2;\n" 2803 "MAD R2.xyz, -R0.w, R1.w, R3;\n" 2804 "MUL R4.xyz, R0.w, R2;\n" 2805 "MAX R2.xyz, R0, c[10].w;\n" 2806 "ADD R2.w, -R1, c[10].z;\n" 2807 "ADD R3.w, -R0, c[10].z;\n" 2808 "MUL R5.xyz, R0, R2.w;\n" 2809 "RCP R2.x, R2.x;\n" 2810 "RCP R2.y, R2.y;\n" 2811 "RCP R2.z, R2.z;\n" 2812 "MAD R2.xyz, R4, R2, R5;\n" 2813 "MUL R4.xyz, R1, R3.w;\n" 2814 "MAD R0.xyz, R0, R2.w, R4;\n" 2815 "MUL R2.w, R0, R1;\n" 2816 "MAD R2.xyz, R1, R3.w, R2;\n" 2817 "ADD R2.xyz, R2, -R0;\n" 2818 "SGE R3.xyz, R3, R2.w;\n" 2819 "MAD R2.xyz, R3, R2, R0;\n" 2820 "ADD R0.z, R0.w, R1.w;\n" 2821 "MAD R2.w, -R0, R1, R0.z;\n" 2822 "ADD R0.xy, fragment.position, c[6];\n" 2823 "MUL R0.xy, R0, c[4];\n" 2824 "TEX R0, R0, texture[1], 2D;\n" 2825 "ADD R2, R2, -R1;\n" 2826 "DP4 R0.x, R0, c[7];\n" 2827 "MAD result.color, R0.x, R2, R1;\n" 2828 "END\n" 2829 ; 2830 2831 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT = 2832 "!!ARBfp1.0\n" 2833 "PARAM c[11] = { program.local[0..7],\n" 2834 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" 2835 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" 2836 " { 3.141593, 0.15915494, 2, 1 } };\n" 2837 "TEMP R0;\n" 2838 "TEMP R1;\n" 2839 "TEMP R2;\n" 2840 "TEMP R3;\n" 2841 "TEMP R4;\n" 2842 "MUL R0.xyz, fragment.position.y, c[2];\n" 2843 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 2844 "ADD R0.xyz, R0, c[3];\n" 2845 "RCP R0.z, R0.z;\n" 2846 "MUL R0.xy, R0, R0.z;\n" 2847 "ABS R0.z, R0.x;\n" 2848 "ABS R0.w, R0.y;\n" 2849 "ADD R0.w, R0, -R0.z;\n" 2850 "ADD R1.x, R0.y, c[8];\n" 2851 "ABS R0.w, R0;\n" 2852 "CMP R0.y, -R0.w, R0, R1.x;\n" 2853 "ABS R0.w, -R0.y;\n" 2854 "MAX R1.x, R0.z, R0.w;\n" 2855 "RCP R1.y, R1.x;\n" 2856 "MIN R1.x, R0.z, R0.w;\n" 2857 "MUL R1.x, R1, R1.y;\n" 2858 "MUL R1.y, R1.x, R1.x;\n" 2859 "MAD R1.z, R1.y, c[8].y, c[8];\n" 2860 "MAD R1.z, R1, R1.y, -c[8].w;\n" 2861 "MAD R1.z, R1, R1.y, c[9].x;\n" 2862 "MAD R1.z, R1, R1.y, -c[9].y;\n" 2863 "MAD R1.y, R1.z, R1, c[9].z;\n" 2864 "MUL R1.x, R1.y, R1;\n" 2865 "ADD R0.z, -R0, R0.w;\n" 2866 "ADD R1.y, -R1.x, c[9].w;\n" 2867 "CMP R0.z, -R0, R1.y, R1.x;\n" 2868 "ADD R0.w, -R0.z, c[10].x;\n" 2869 "CMP R0.x, R0, R0.w, R0.z;\n" 2870 "CMP R0.x, -R0.y, -R0, R0;\n" 2871 "ADD R0.x, R0, c[0];\n" 2872 "MUL R0.x, R0, c[10].y;\n" 2873 "FLR R0.y, R0.x;\n" 2874 "ADD R0.x, R0, -R0.y;\n" 2875 "TEX R0, R0, texture[2], 1D;\n" 2876 "MUL R1.xy, fragment.position, c[5];\n" 2877 "TEX R1, R1, texture[0], 2D;\n" 2878 "ADD R2.w, -R1, c[10];\n" 2879 "ADD R3.xyz, R0.w, -R0;\n" 2880 "ADD R2.xyz, R1.w, -R1;\n" 2881 "MUL R2.xyz, R2, R3;\n" 2882 "MUL R2.xyz, R2, c[10].z;\n" 2883 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 2884 "MUL R4.xyz, R0, R2.w;\n" 2885 "MAD R2.xyz, R0, R2.w, R2;\n" 2886 "MUL R3.xyz, R0, R1;\n" 2887 "ADD R2.w, -R0, c[10];\n" 2888 "MAD R3.xyz, R3, c[10].z, R4;\n" 2889 "MUL R0.xyz, R0, c[10].z;\n" 2890 "SGE R0.xyz, R0, R0.w;\n" 2891 "MAD R3.xyz, R1, R2.w, R3;\n" 2892 "MAD R2.xyz, R1, R2.w, R2;\n" 2893 "ADD R2.xyz, R2, -R3;\n" 2894 "MAD R2.xyz, R0, R2, R3;\n" 2895 "ADD R0.z, R0.w, R1.w;\n" 2896 "MAD R2.w, -R0, R1, R0.z;\n" 2897 "ADD R0.xy, fragment.position, c[6];\n" 2898 "MUL R0.xy, R0, c[4];\n" 2899 "TEX R0, R0, texture[1], 2D;\n" 2900 "ADD R2, R2, -R1;\n" 2901 "DP4 R0.x, R0, c[7];\n" 2902 "MAD result.color, R0.x, R2, R1;\n" 2903 "END\n" 2904 ; 2905 2906 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT = 2907 "!!ARBfp1.0\n" 2908 "PARAM c[13] = { program.local[0..7],\n" 2909 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" 2910 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" 2911 " { 3.141593, 0.15915494, 1, 2 },\n" 2912 " { 9.9999997e-006, 4, 16, 12 },\n" 2913 " { 3 } };\n" 2914 "TEMP R0;\n" 2915 "TEMP R1;\n" 2916 "TEMP R2;\n" 2917 "TEMP R3;\n" 2918 "TEMP R4;\n" 2919 "TEMP R5;\n" 2920 "TEMP R6;\n" 2921 "MUL R0.xyz, fragment.position.y, c[2];\n" 2922 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 2923 "ADD R0.xyz, R0, c[3];\n" 2924 "RCP R0.z, R0.z;\n" 2925 "MUL R0.xy, R0, R0.z;\n" 2926 "ABS R0.w, R0.x;\n" 2927 "ABS R0.z, R0.y;\n" 2928 "ADD R0.z, R0, -R0.w;\n" 2929 "ADD R1.x, R0.y, c[8];\n" 2930 "ABS R0.z, R0;\n" 2931 "CMP R0.y, -R0.z, R0, R1.x;\n" 2932 "ABS R0.z, -R0.y;\n" 2933 "MAX R1.x, R0.w, R0.z;\n" 2934 "RCP R1.y, R1.x;\n" 2935 "MIN R1.x, R0.w, R0.z;\n" 2936 "MUL R1.x, R1, R1.y;\n" 2937 "MUL R1.y, R1.x, R1.x;\n" 2938 "MAD R1.z, R1.y, c[8].y, c[8];\n" 2939 "MAD R1.z, R1, R1.y, -c[8].w;\n" 2940 "MAD R1.z, R1, R1.y, c[9].x;\n" 2941 "MAD R1.z, R1, R1.y, -c[9].y;\n" 2942 "MAD R1.y, R1.z, R1, c[9].z;\n" 2943 "MUL R1.x, R1.y, R1;\n" 2944 "ADD R1.y, -R1.x, c[9].w;\n" 2945 "ADD R0.z, -R0.w, R0;\n" 2946 "CMP R0.z, -R0, R1.y, R1.x;\n" 2947 "ADD R0.w, -R0.z, c[10].x;\n" 2948 "CMP R0.x, R0, R0.w, R0.z;\n" 2949 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 2950 "TEX R1, R0.zwzw, texture[0], 2D;\n" 2951 "CMP R0.x, -R0.y, -R0, R0;\n" 2952 "MAX R0.z, R1.w, c[11].x;\n" 2953 "RCP R2.x, R0.z;\n" 2954 "MUL R3.xyz, R1, R2.x;\n" 2955 "MAD R4.xyz, R3, c[11].z, -c[11].w;\n" 2956 "ADD R0.x, R0, c[0];\n" 2957 "MUL R0.x, R0, c[10].y;\n" 2958 "FLR R0.y, R0.x;\n" 2959 "ADD R0.x, R0, -R0.y;\n" 2960 "TEX R0, R0, texture[2], 1D;\n" 2961 "MAD R2.xyz, R0, c[10].w, -R0.w;\n" 2962 "MAD R4.xyz, R3, R4, c[12].x;\n" 2963 "MUL R5.xyz, R1.w, R2;\n" 2964 "MUL R6.xyz, R5, R4;\n" 2965 "RSQ R2.w, R3.x;\n" 2966 "RCP R4.x, R2.w;\n" 2967 "RSQ R2.w, R3.y;\n" 2968 "RSQ R3.w, R3.z;\n" 2969 "RCP R4.y, R2.w;\n" 2970 "RCP R4.z, R3.w;\n" 2971 "ADD R4.xyz, -R3, R4;\n" 2972 "MUL R6.xyz, R3, R6;\n" 2973 "MUL R4.xyz, R5, R4;\n" 2974 "ADD R3.xyz, -R3, c[10].z;\n" 2975 "MAD R2.xyz, R2, R3, R0.w;\n" 2976 "MUL R3.xyz, R0, c[10].w;\n" 2977 "MAD R5.xyz, R0.w, R1, R6;\n" 2978 "MAD R4.xyz, R0.w, R1, R4;\n" 2979 "ADD R6.xyz, R4, -R5;\n" 2980 "MUL R4.xyz, R1, c[11].y;\n" 2981 "SGE R4.xyz, R4, R1.w;\n" 2982 "MAD R4.xyz, R4, R6, R5;\n" 2983 "MAD R4.xyz, -R1, R2, R4;\n" 2984 "SGE R3.xyz, R3, R0.w;\n" 2985 "MUL R2.xyz, R1, R2;\n" 2986 "ADD R2.w, -R1, c[10].z;\n" 2987 "MAD R2.xyz, R3, R4, R2;\n" 2988 "MAD R2.xyz, R0, R2.w, R2;\n" 2989 "ADD R0.x, -R0.w, c[10].z;\n" 2990 "MAD R2.xyz, R1, R0.x, R2;\n" 2991 "ADD R0.z, R0.w, R1.w;\n" 2992 "MAD R2.w, -R0, R1, R0.z;\n" 2993 "ADD R0.xy, fragment.position, c[6];\n" 2994 "MUL R0.xy, R0, c[4];\n" 2995 "TEX R0, R0, texture[1], 2D;\n" 2996 "ADD R2, R2, -R1;\n" 2997 "DP4 R0.x, R0, c[7];\n" 2998 "MAD result.color, R0.x, R2, R1;\n" 2999 "END\n" 3000 ; 3001 3002 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE = 3003 "!!ARBfp1.0\n" 3004 "PARAM c[11] = { program.local[0..7],\n" 3005 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3006 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3007 " { 0.33299461, 0.99999559, 2 } };\n" 3008 "TEMP R0;\n" 3009 "TEMP R1;\n" 3010 "TEMP R2;\n" 3011 "TEMP R3;\n" 3012 "MUL R0.xyz, fragment.position.y, c[2];\n" 3013 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3014 "ADD R0.xyz, R0, c[3];\n" 3015 "RCP R0.z, R0.z;\n" 3016 "MUL R0.xy, R0, R0.z;\n" 3017 "ABS R0.z, R0.x;\n" 3018 "ABS R0.w, R0.y;\n" 3019 "ADD R0.w, R0, -R0.z;\n" 3020 "ADD R1.x, R0.y, c[8].y;\n" 3021 "ABS R0.w, R0;\n" 3022 "CMP R0.y, -R0.w, R0, R1.x;\n" 3023 "ABS R0.w, -R0.y;\n" 3024 "MAX R1.x, R0.z, R0.w;\n" 3025 "RCP R1.y, R1.x;\n" 3026 "MIN R1.x, R0.z, R0.w;\n" 3027 "MUL R1.x, R1, R1.y;\n" 3028 "MUL R1.y, R1.x, R1.x;\n" 3029 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" 3030 "MAD R1.z, R1, R1.y, -c[9];\n" 3031 "MAD R1.z, R1, R1.y, c[9].w;\n" 3032 "MAD R1.z, R1, R1.y, -c[10].x;\n" 3033 "MAD R1.y, R1.z, R1, c[10];\n" 3034 "MUL R1.x, R1.y, R1;\n" 3035 "ADD R1.y, -R1.x, c[8].w;\n" 3036 "ADD R0.z, -R0, R0.w;\n" 3037 "CMP R0.z, -R0, R1.y, R1.x;\n" 3038 "ADD R0.w, -R0.z, c[8].z;\n" 3039 "CMP R0.x, R0, R0.w, R0.z;\n" 3040 "CMP R0.x, -R0.y, -R0, R0;\n" 3041 "ADD R0.x, R0, c[0];\n" 3042 "MUL R0.z, R0.x, c[8].x;\n" 3043 "FLR R0.w, R0.z;\n" 3044 "ADD R1.x, R0.z, -R0.w;\n" 3045 "MUL R0.xy, fragment.position, c[5];\n" 3046 "TEX R0, R0, texture[0], 2D;\n" 3047 "TEX R1, R1, texture[2], 1D;\n" 3048 "ADD R2.xyz, R1, R0;\n" 3049 "MUL R3.xyz, R1.w, R0;\n" 3050 "MUL R1.xyz, R1, R0.w;\n" 3051 "MIN R1.xyz, R1, R3;\n" 3052 "MAD R2.xyz, -R1, c[10].z, R2;\n" 3053 "ADD R1.z, R1.w, R0.w;\n" 3054 "MAD R2.w, -R1, R0, R1.z;\n" 3055 "ADD R1.xy, fragment.position, c[6];\n" 3056 "MUL R1.xy, R1, c[4];\n" 3057 "TEX R1, R1, texture[1], 2D;\n" 3058 "ADD R2, R2, -R0;\n" 3059 "DP4 R1.x, R1, c[7];\n" 3060 "MAD result.color, R1.x, R2, R0;\n" 3061 "END\n" 3062 ; 3063 3064 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION = 3065 "!!ARBfp1.0\n" 3066 "PARAM c[11] = { program.local[0..7],\n" 3067 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3068 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3069 " { 0.33299461, 0.99999559, 2, 1 } };\n" 3070 "TEMP R0;\n" 3071 "TEMP R1;\n" 3072 "TEMP R2;\n" 3073 "TEMP R3;\n" 3074 "MUL R0.xyz, fragment.position.y, c[2];\n" 3075 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3076 "ADD R0.xyz, R0, c[3];\n" 3077 "RCP R0.z, R0.z;\n" 3078 "MUL R0.xy, R0, R0.z;\n" 3079 "ABS R0.z, R0.x;\n" 3080 "ABS R0.w, R0.y;\n" 3081 "ADD R0.w, R0, -R0.z;\n" 3082 "ADD R1.x, R0.y, c[8].y;\n" 3083 "ABS R0.w, R0;\n" 3084 "CMP R0.y, -R0.w, R0, R1.x;\n" 3085 "ABS R0.w, -R0.y;\n" 3086 "MAX R1.x, R0.z, R0.w;\n" 3087 "RCP R1.y, R1.x;\n" 3088 "MIN R1.x, R0.z, R0.w;\n" 3089 "MUL R1.x, R1, R1.y;\n" 3090 "MUL R1.y, R1.x, R1.x;\n" 3091 "MAD R1.z, R1.y, c[9].x, c[9].y;\n" 3092 "MAD R1.z, R1, R1.y, -c[9];\n" 3093 "MAD R1.z, R1, R1.y, c[9].w;\n" 3094 "MAD R1.z, R1, R1.y, -c[10].x;\n" 3095 "MAD R1.y, R1.z, R1, c[10];\n" 3096 "MUL R1.x, R1.y, R1;\n" 3097 "ADD R1.y, -R1.x, c[8].w;\n" 3098 "ADD R0.z, -R0, R0.w;\n" 3099 "CMP R0.z, -R0, R1.y, R1.x;\n" 3100 "ADD R0.w, -R0.z, c[8].z;\n" 3101 "CMP R0.x, R0, R0.w, R0.z;\n" 3102 "CMP R0.x, -R0.y, -R0, R0;\n" 3103 "ADD R0.x, R0, c[0];\n" 3104 "MUL R0.z, R0.x, c[8].x;\n" 3105 "FLR R0.w, R0.z;\n" 3106 "ADD R1.x, R0.z, -R0.w;\n" 3107 "MUL R0.xy, fragment.position, c[5];\n" 3108 "TEX R0, R0, texture[0], 2D;\n" 3109 "TEX R1, R1, texture[2], 1D;\n" 3110 "MUL R2.xyz, R1.w, R0;\n" 3111 "MAD R3.xyz, R1, R0.w, R2;\n" 3112 "MUL R2.xyz, R1, R0;\n" 3113 "MAD R2.xyz, -R2, c[10].z, R3;\n" 3114 "ADD R2.w, -R0, c[10];\n" 3115 "MAD R1.xyz, R1, R2.w, R2;\n" 3116 "ADD R2.x, -R1.w, c[10].w;\n" 3117 "MAD R2.xyz, R0, R2.x, R1;\n" 3118 "ADD R1.z, R1.w, R0.w;\n" 3119 "MAD R2.w, -R1, R0, R1.z;\n" 3120 "ADD R1.xy, fragment.position, c[6];\n" 3121 "MUL R1.xy, R1, c[4];\n" 3122 "TEX R1, R1, texture[1], 2D;\n" 3123 "ADD R2, R2, -R0;\n" 3124 "DP4 R1.x, R1, c[7];\n" 3125 "MAD result.color, R1.x, R2, R0;\n" 3126 "END\n" 3127 ; 3128 3129 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = 3130 "!!ARBfp1.0\n" 3131 "PARAM c[10] = { program.local[0..6],\n" 3132 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3133 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3134 " { 0.33299461, 0.99999559, 1 } };\n" 3135 "TEMP R0;\n" 3136 "TEMP R1;\n" 3137 "TEMP R2;\n" 3138 "TEMP R3;\n" 3139 "MUL R0.xyz, fragment.position.y, c[2];\n" 3140 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3141 "ADD R0.xyz, R0, c[3];\n" 3142 "RCP R0.z, R0.z;\n" 3143 "MUL R0.xy, R0, R0.z;\n" 3144 "ABS R0.z, R0.x;\n" 3145 "ABS R0.w, R0.y;\n" 3146 "ADD R0.w, R0, -R0.z;\n" 3147 "ADD R1.x, R0.y, c[7].y;\n" 3148 "ABS R0.w, R0;\n" 3149 "CMP R0.y, -R0.w, R0, R1.x;\n" 3150 "ABS R0.w, -R0.y;\n" 3151 "MAX R1.x, R0.z, R0.w;\n" 3152 "RCP R1.y, R1.x;\n" 3153 "MIN R1.x, R0.z, R0.w;\n" 3154 "MUL R1.x, R1, R1.y;\n" 3155 "MUL R1.y, R1.x, R1.x;\n" 3156 "MAD R1.z, R1.y, c[8].x, c[8].y;\n" 3157 "MAD R1.z, R1, R1.y, -c[8];\n" 3158 "MAD R1.z, R1, R1.y, c[8].w;\n" 3159 "MAD R1.z, R1, R1.y, -c[9].x;\n" 3160 "MAD R1.y, R1.z, R1, c[9];\n" 3161 "MUL R1.x, R1.y, R1;\n" 3162 "ADD R0.z, -R0, R0.w;\n" 3163 "ADD R1.y, -R1.x, c[7].w;\n" 3164 "CMP R0.z, -R0, R1.y, R1.x;\n" 3165 "ADD R0.w, -R0.z, c[7].z;\n" 3166 "CMP R0.x, R0, R0.w, R0.z;\n" 3167 "CMP R0.x, -R0.y, -R0, R0;\n" 3168 "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n" 3169 "TEX R1, R0.zwzw, texture[0], 2D;\n" 3170 "MUL R2.xyz, R1, c[4].y;\n" 3171 "ADD R0.x, R0, c[0];\n" 3172 "MUL R0.x, R0, c[7];\n" 3173 "FLR R0.y, R0.x;\n" 3174 "ADD R0.x, R0, -R0.y;\n" 3175 "TEX R0, R0, texture[1], 1D;\n" 3176 "MUL R3.xyz, R0.w, R2;\n" 3177 "MUL R2.xyz, R0, c[4].x;\n" 3178 "MAD R2.xyz, R1.w, R2, R3;\n" 3179 "ADD R2.w, -R1, c[9].z;\n" 3180 "MUL R0.xyz, R0, c[5].y;\n" 3181 "MAD R0.xyz, R2.w, R0, R2;\n" 3182 "ADD R2.x, -R0.w, c[9].z;\n" 3183 "MUL R1.xyz, R1, c[5].z;\n" 3184 "MAD result.color.xyz, R2.x, R1, R0;\n" 3185 "MUL R0.x, R0.w, R1.w;\n" 3186 "MUL R0.z, R1.w, R2.x;\n" 3187 "MUL R0.y, R0.w, R2.w;\n" 3188 "DP3 result.color.w, R0, c[5];\n" 3189 "END\n" 3190 ; 3191 3192 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY_NOMASK = 3193 "!!ARBfp1.0\n" 3194 "PARAM c[8] = { program.local[0..4],\n" 3195 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3196 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3197 " { 0.33299461, 0.99999559, 1 } };\n" 3198 "TEMP R0;\n" 3199 "TEMP R1;\n" 3200 "TEMP R2;\n" 3201 "MUL R0.xyz, fragment.position.y, c[2];\n" 3202 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3203 "ADD R0.xyz, R0, c[3];\n" 3204 "RCP R0.z, R0.z;\n" 3205 "MUL R0.xy, R0, R0.z;\n" 3206 "ABS R0.z, R0.x;\n" 3207 "ABS R0.w, R0.y;\n" 3208 "ADD R0.w, R0, -R0.z;\n" 3209 "ADD R1.x, R0.y, c[5].y;\n" 3210 "ABS R0.w, R0;\n" 3211 "CMP R0.y, -R0.w, R0, R1.x;\n" 3212 "ABS R0.w, -R0.y;\n" 3213 "MAX R1.x, R0.z, R0.w;\n" 3214 "RCP R1.y, R1.x;\n" 3215 "MIN R1.x, R0.z, R0.w;\n" 3216 "MUL R1.x, R1, R1.y;\n" 3217 "MUL R1.y, R1.x, R1.x;\n" 3218 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" 3219 "MAD R1.z, R1, R1.y, -c[6];\n" 3220 "MAD R1.z, R1, R1.y, c[6].w;\n" 3221 "MAD R1.z, R1, R1.y, -c[7].x;\n" 3222 "MAD R1.y, R1.z, R1, c[7];\n" 3223 "MUL R1.x, R1.y, R1;\n" 3224 "ADD R0.z, -R0, R0.w;\n" 3225 "ADD R1.y, -R1.x, c[5].w;\n" 3226 "CMP R0.z, -R0, R1.y, R1.x;\n" 3227 "ADD R0.w, -R0.z, c[5].z;\n" 3228 "CMP R0.x, R0, R0.w, R0.z;\n" 3229 "CMP R0.x, -R0.y, -R0, R0;\n" 3230 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 3231 "TEX R1, R0.zwzw, texture[0], 2D;\n" 3232 "ADD R0.x, R0, c[0];\n" 3233 "MUL R0.x, R0, c[5];\n" 3234 "FLR R0.y, R0.x;\n" 3235 "ADD R0.x, R0, -R0.y;\n" 3236 "TEX R0, R0, texture[1], 1D;\n" 3237 "ADD R2.x, -R1.w, c[7].z;\n" 3238 "MUL R2.xyz, R0, R2.x;\n" 3239 "MAD R0.xyz, R0, R1, R2;\n" 3240 "ADD R2.x, R0.w, R1.w;\n" 3241 "ADD R2.y, -R0.w, c[7].z;\n" 3242 "MAD result.color.xyz, R1, R2.y, R0;\n" 3243 "MAD result.color.w, -R0, R1, R2.x;\n" 3244 "END\n" 3245 ; 3246 3247 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN_NOMASK = 3248 "!!ARBfp1.0\n" 3249 "PARAM c[8] = { program.local[0..4],\n" 3250 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3251 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3252 " { 0.33299461, 0.99999559 } };\n" 3253 "TEMP R0;\n" 3254 "TEMP R1;\n" 3255 "TEMP R2;\n" 3256 "MUL R0.xyz, fragment.position.y, c[2];\n" 3257 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3258 "ADD R0.xyz, R0, c[3];\n" 3259 "RCP R0.z, R0.z;\n" 3260 "MUL R0.xy, R0, R0.z;\n" 3261 "ABS R0.z, R0.x;\n" 3262 "ABS R0.w, R0.y;\n" 3263 "ADD R0.w, R0, -R0.z;\n" 3264 "ADD R1.x, R0.y, c[5].y;\n" 3265 "ABS R0.w, R0;\n" 3266 "CMP R0.y, -R0.w, R0, R1.x;\n" 3267 "ABS R0.w, -R0.y;\n" 3268 "MAX R1.x, R0.z, R0.w;\n" 3269 "RCP R1.y, R1.x;\n" 3270 "MIN R1.x, R0.z, R0.w;\n" 3271 "MUL R1.x, R1, R1.y;\n" 3272 "MUL R1.y, R1.x, R1.x;\n" 3273 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" 3274 "MAD R1.z, R1, R1.y, -c[6];\n" 3275 "MAD R1.z, R1, R1.y, c[6].w;\n" 3276 "MAD R1.z, R1, R1.y, -c[7].x;\n" 3277 "MAD R1.y, R1.z, R1, c[7];\n" 3278 "MUL R1.x, R1.y, R1;\n" 3279 "ADD R0.z, -R0, R0.w;\n" 3280 "ADD R1.y, -R1.x, c[5].w;\n" 3281 "CMP R0.z, -R0, R1.y, R1.x;\n" 3282 "ADD R0.w, -R0.z, c[5].z;\n" 3283 "CMP R0.x, R0, R0.w, R0.z;\n" 3284 "CMP R0.x, -R0.y, -R0, R0;\n" 3285 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 3286 "ADD R0.x, R0, c[0];\n" 3287 "MUL R0.x, R0, c[5];\n" 3288 "FLR R0.y, R0.x;\n" 3289 "TEX R1, R0.zwzw, texture[0], 2D;\n" 3290 "ADD R0.x, R0, -R0.y;\n" 3291 "TEX R0, R0, texture[1], 1D;\n" 3292 "ADD R2, R0, R1;\n" 3293 "MAD result.color, -R0, R1, R2;\n" 3294 "END\n" 3295 ; 3296 3297 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY_NOMASK = 3298 "!!ARBfp1.0\n" 3299 "PARAM c[8] = { program.local[0..4],\n" 3300 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" 3301 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" 3302 " { 3.141593, 0.15915494, 2, 1 } };\n" 3303 "TEMP R0;\n" 3304 "TEMP R1;\n" 3305 "TEMP R2;\n" 3306 "TEMP R3;\n" 3307 "MUL R0.xyz, fragment.position.y, c[2];\n" 3308 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3309 "ADD R0.xyz, R0, c[3];\n" 3310 "RCP R0.z, R0.z;\n" 3311 "MUL R0.xy, R0, R0.z;\n" 3312 "ABS R0.z, R0.x;\n" 3313 "ABS R0.w, R0.y;\n" 3314 "ADD R0.w, R0, -R0.z;\n" 3315 "ADD R1.x, R0.y, c[5];\n" 3316 "ABS R0.w, R0;\n" 3317 "CMP R0.y, -R0.w, R0, R1.x;\n" 3318 "ABS R0.w, -R0.y;\n" 3319 "MAX R1.x, R0.z, R0.w;\n" 3320 "RCP R1.y, R1.x;\n" 3321 "MIN R1.x, R0.z, R0.w;\n" 3322 "MUL R1.x, R1, R1.y;\n" 3323 "MUL R1.y, R1.x, R1.x;\n" 3324 "MAD R1.z, R1.y, c[5].y, c[5];\n" 3325 "MAD R1.z, R1, R1.y, -c[5].w;\n" 3326 "MAD R1.z, R1, R1.y, c[6].x;\n" 3327 "MAD R1.z, R1, R1.y, -c[6].y;\n" 3328 "MAD R1.y, R1.z, R1, c[6].z;\n" 3329 "MUL R1.x, R1.y, R1;\n" 3330 "ADD R0.z, -R0, R0.w;\n" 3331 "ADD R1.y, -R1.x, c[6].w;\n" 3332 "CMP R0.z, -R0, R1.y, R1.x;\n" 3333 "ADD R0.w, -R0.z, c[7].x;\n" 3334 "CMP R0.x, R0, R0.w, R0.z;\n" 3335 "CMP R0.x, -R0.y, -R0, R0;\n" 3336 "ADD R0.x, R0, c[0];\n" 3337 "MUL R0.x, R0, c[7].y;\n" 3338 "FLR R0.y, R0.x;\n" 3339 "ADD R0.x, R0, -R0.y;\n" 3340 "TEX R0, R0, texture[1], 1D;\n" 3341 "MUL R1.xy, fragment.position, c[4];\n" 3342 "TEX R1, R1, texture[0], 2D;\n" 3343 "ADD R3.xyz, R0.w, -R0;\n" 3344 "ADD R2.xyz, R1.w, -R1;\n" 3345 "MUL R2.xyz, R2, R3;\n" 3346 "ADD R2.w, -R1, c[7];\n" 3347 "MUL R2.xyz, R2, c[7].z;\n" 3348 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 3349 "MAD R2.xyz, R0, R2.w, R2;\n" 3350 "MUL R3.xyz, R0, R2.w;\n" 3351 "MUL R0.xyz, R0, R1;\n" 3352 "ADD R2.w, -R0, c[7];\n" 3353 "MAD R0.xyz, R0, c[7].z, R3;\n" 3354 "MAD R0.xyz, R1, R2.w, R0;\n" 3355 "MAD R2.xyz, R1, R2.w, R2;\n" 3356 "MUL R1.xyz, R1, c[7].z;\n" 3357 "ADD R2.w, R0, R1;\n" 3358 "ADD R2.xyz, R2, -R0;\n" 3359 "SGE R1.xyz, R1, R1.w;\n" 3360 "MAD result.color.xyz, R1, R2, R0;\n" 3361 "MAD result.color.w, -R0, R1, R2;\n" 3362 "END\n" 3363 ; 3364 3365 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN_NOMASK = 3366 "!!ARBfp1.0\n" 3367 "PARAM c[8] = { program.local[0..4],\n" 3368 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3369 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3370 " { 0.33299461, 0.99999559, 1 } };\n" 3371 "TEMP R0;\n" 3372 "TEMP R1;\n" 3373 "TEMP R2;\n" 3374 "TEMP R3;\n" 3375 "MUL R0.xyz, fragment.position.y, c[2];\n" 3376 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3377 "ADD R0.xyz, R0, c[3];\n" 3378 "RCP R0.z, R0.z;\n" 3379 "MUL R0.xy, R0, R0.z;\n" 3380 "ABS R0.z, R0.x;\n" 3381 "ABS R0.w, R0.y;\n" 3382 "ADD R0.w, R0, -R0.z;\n" 3383 "ADD R1.x, R0.y, c[5].y;\n" 3384 "ABS R0.w, R0;\n" 3385 "CMP R0.y, -R0.w, R0, R1.x;\n" 3386 "ABS R0.w, -R0.y;\n" 3387 "MAX R1.x, R0.z, R0.w;\n" 3388 "RCP R1.y, R1.x;\n" 3389 "MIN R1.x, R0.z, R0.w;\n" 3390 "MUL R1.x, R1, R1.y;\n" 3391 "MUL R1.y, R1.x, R1.x;\n" 3392 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" 3393 "MAD R1.z, R1, R1.y, -c[6];\n" 3394 "MAD R1.z, R1, R1.y, c[6].w;\n" 3395 "MAD R1.z, R1, R1.y, -c[7].x;\n" 3396 "MAD R1.y, R1.z, R1, c[7];\n" 3397 "MUL R1.x, R1.y, R1;\n" 3398 "ADD R0.z, -R0, R0.w;\n" 3399 "ADD R1.y, -R1.x, c[5].w;\n" 3400 "CMP R0.z, -R0, R1.y, R1.x;\n" 3401 "ADD R0.w, -R0.z, c[5].z;\n" 3402 "CMP R0.x, R0, R0.w, R0.z;\n" 3403 "CMP R0.x, -R0.y, -R0, R0;\n" 3404 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 3405 "TEX R1, R0.zwzw, texture[0], 2D;\n" 3406 "ADD R0.x, R0, c[0];\n" 3407 "MUL R0.x, R0, c[5];\n" 3408 "FLR R0.y, R0.x;\n" 3409 "ADD R0.x, R0, -R0.y;\n" 3410 "TEX R0, R0, texture[1], 1D;\n" 3411 "MUL R2.xyz, R0, R1.w;\n" 3412 "MUL R3.xyz, R0.w, R1;\n" 3413 "MIN R2.xyz, R2, R3;\n" 3414 "ADD R2.w, -R1, c[7].z;\n" 3415 "MAD R0.xyz, R0, R2.w, R2;\n" 3416 "ADD R2.x, R0.w, R1.w;\n" 3417 "ADD R2.y, -R0.w, c[7].z;\n" 3418 "MAD result.color.xyz, R1, R2.y, R0;\n" 3419 "MAD result.color.w, -R0, R1, R2.x;\n" 3420 "END\n" 3421 ; 3422 3423 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN_NOMASK = 3424 "!!ARBfp1.0\n" 3425 "PARAM c[8] = { program.local[0..4],\n" 3426 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3427 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3428 " { 0.33299461, 0.99999559, 1 } };\n" 3429 "TEMP R0;\n" 3430 "TEMP R1;\n" 3431 "TEMP R2;\n" 3432 "TEMP R3;\n" 3433 "MUL R0.xyz, fragment.position.y, c[2];\n" 3434 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3435 "ADD R0.xyz, R0, c[3];\n" 3436 "RCP R0.z, R0.z;\n" 3437 "MUL R0.xy, R0, R0.z;\n" 3438 "ABS R0.z, R0.x;\n" 3439 "ABS R0.w, R0.y;\n" 3440 "ADD R0.w, R0, -R0.z;\n" 3441 "ADD R1.x, R0.y, c[5].y;\n" 3442 "ABS R0.w, R0;\n" 3443 "CMP R0.y, -R0.w, R0, R1.x;\n" 3444 "ABS R0.w, -R0.y;\n" 3445 "MAX R1.x, R0.z, R0.w;\n" 3446 "RCP R1.y, R1.x;\n" 3447 "MIN R1.x, R0.z, R0.w;\n" 3448 "MUL R1.x, R1, R1.y;\n" 3449 "MUL R1.y, R1.x, R1.x;\n" 3450 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" 3451 "MAD R1.z, R1, R1.y, -c[6];\n" 3452 "MAD R1.z, R1, R1.y, c[6].w;\n" 3453 "MAD R1.z, R1, R1.y, -c[7].x;\n" 3454 "MAD R1.y, R1.z, R1, c[7];\n" 3455 "MUL R1.x, R1.y, R1;\n" 3456 "ADD R0.z, -R0, R0.w;\n" 3457 "ADD R1.y, -R1.x, c[5].w;\n" 3458 "CMP R0.z, -R0, R1.y, R1.x;\n" 3459 "ADD R0.w, -R0.z, c[5].z;\n" 3460 "CMP R0.x, R0, R0.w, R0.z;\n" 3461 "CMP R0.x, -R0.y, -R0, R0;\n" 3462 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 3463 "TEX R1, R0.zwzw, texture[0], 2D;\n" 3464 "ADD R0.x, R0, c[0];\n" 3465 "MUL R0.x, R0, c[5];\n" 3466 "FLR R0.y, R0.x;\n" 3467 "ADD R0.x, R0, -R0.y;\n" 3468 "TEX R0, R0, texture[1], 1D;\n" 3469 "MUL R2.xyz, R0, R1.w;\n" 3470 "MUL R3.xyz, R0.w, R1;\n" 3471 "MAX R2.xyz, R2, R3;\n" 3472 "ADD R2.w, -R1, c[7].z;\n" 3473 "MAD R0.xyz, R0, R2.w, R2;\n" 3474 "ADD R2.x, R0.w, R1.w;\n" 3475 "ADD R2.y, -R0.w, c[7].z;\n" 3476 "MAD result.color.xyz, R1, R2.y, R0;\n" 3477 "MAD result.color.w, -R0, R1, R2.x;\n" 3478 "END\n" 3479 ; 3480 3481 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE_NOMASK = 3482 "!!ARBfp1.0\n" 3483 "PARAM c[8] = { program.local[0..4],\n" 3484 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" 3485 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" 3486 " { 3.141593, 0.15915494, 1, 1e-006 } };\n" 3487 "TEMP R0;\n" 3488 "TEMP R1;\n" 3489 "TEMP R2;\n" 3490 "TEMP R3;\n" 3491 "MUL R0.xyz, fragment.position.y, c[2];\n" 3492 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3493 "ADD R0.xyz, R0, c[3];\n" 3494 "RCP R0.z, R0.z;\n" 3495 "MUL R0.xy, R0, R0.z;\n" 3496 "ABS R0.z, R0.x;\n" 3497 "ABS R0.w, R0.y;\n" 3498 "ADD R0.w, R0, -R0.z;\n" 3499 "ADD R1.x, R0.y, c[5];\n" 3500 "ABS R0.w, R0;\n" 3501 "CMP R0.y, -R0.w, R0, R1.x;\n" 3502 "ABS R0.w, -R0.y;\n" 3503 "MAX R1.x, R0.z, R0.w;\n" 3504 "RCP R1.y, R1.x;\n" 3505 "MIN R1.x, R0.z, R0.w;\n" 3506 "MUL R1.x, R1, R1.y;\n" 3507 "MUL R1.y, R1.x, R1.x;\n" 3508 "MAD R1.z, R1.y, c[5].y, c[5];\n" 3509 "MAD R1.z, R1, R1.y, -c[5].w;\n" 3510 "MAD R1.z, R1, R1.y, c[6].x;\n" 3511 "MAD R1.z, R1, R1.y, -c[6].y;\n" 3512 "MAD R1.y, R1.z, R1, c[6].z;\n" 3513 "MUL R1.x, R1.y, R1;\n" 3514 "ADD R1.y, -R1.x, c[6].w;\n" 3515 "ADD R0.z, -R0, R0.w;\n" 3516 "CMP R0.z, -R0, R1.y, R1.x;\n" 3517 "ADD R0.w, -R0.z, c[7].x;\n" 3518 "CMP R0.x, R0, R0.w, R0.z;\n" 3519 "CMP R0.x, -R0.y, -R0, R0;\n" 3520 "ADD R0.x, R0, c[0];\n" 3521 "MUL R0.x, R0, c[7].y;\n" 3522 "FLR R0.y, R0.x;\n" 3523 "ADD R0.x, R0, -R0.y;\n" 3524 "TEX R0, R0, texture[1], 1D;\n" 3525 "MAX R1.x, R0.w, c[7].w;\n" 3526 "RCP R1.x, R1.x;\n" 3527 "MAD R1.xyz, -R0, R1.x, c[7].z;\n" 3528 "MAX R2.xyz, R1, c[7].w;\n" 3529 "MUL R1.xy, fragment.position, c[4];\n" 3530 "TEX R1, R1, texture[0], 2D;\n" 3531 "ADD R2.w, -R0, c[7].z;\n" 3532 "MUL R3.xyz, R1, R2.w;\n" 3533 "ADD R2.w, -R1, c[7].z;\n" 3534 "MAD R3.xyz, R0, R2.w, R3;\n" 3535 "MUL R1.xyz, R0.w, R1;\n" 3536 "MAD R0.xyz, R0, R1.w, R1;\n" 3537 "MUL R2.w, R0, R1;\n" 3538 "RCP R2.x, R2.x;\n" 3539 "RCP R2.y, R2.y;\n" 3540 "RCP R2.z, R2.z;\n" 3541 "MAD R2.xyz, R1, R2, R3;\n" 3542 "MAD R3.xyz, R0.w, R1.w, R3;\n" 3543 "ADD R1.x, R0.w, R1.w;\n" 3544 "ADD R3.xyz, R3, -R2;\n" 3545 "SGE R0.xyz, R0, R2.w;\n" 3546 "MAD result.color.xyz, R0, R3, R2;\n" 3547 "MAD result.color.w, -R0, R1, R1.x;\n" 3548 "END\n" 3549 ; 3550 3551 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN_NOMASK = 3552 "!!ARBfp1.0\n" 3553 "PARAM c[8] = { program.local[0..4],\n" 3554 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" 3555 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" 3556 " { 3.141593, 0.15915494, 1, 9.9999997e-006 } };\n" 3557 "TEMP R0;\n" 3558 "TEMP R1;\n" 3559 "TEMP R2;\n" 3560 "TEMP R3;\n" 3561 "TEMP R4;\n" 3562 "TEMP R5;\n" 3563 "MUL R0.xyz, fragment.position.y, c[2];\n" 3564 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3565 "ADD R0.xyz, R0, c[3];\n" 3566 "RCP R0.z, R0.z;\n" 3567 "MUL R0.xy, R0, R0.z;\n" 3568 "ABS R0.w, R0.x;\n" 3569 "ABS R0.z, R0.y;\n" 3570 "ADD R0.z, R0, -R0.w;\n" 3571 "ADD R1.x, R0.y, c[5];\n" 3572 "ABS R0.z, R0;\n" 3573 "CMP R0.y, -R0.z, R0, R1.x;\n" 3574 "ABS R0.z, -R0.y;\n" 3575 "MAX R1.x, R0.w, R0.z;\n" 3576 "RCP R1.y, R1.x;\n" 3577 "MIN R1.x, R0.w, R0.z;\n" 3578 "MUL R1.x, R1, R1.y;\n" 3579 "MUL R1.y, R1.x, R1.x;\n" 3580 "MAD R1.z, R1.y, c[5].y, c[5];\n" 3581 "MAD R1.z, R1, R1.y, -c[5].w;\n" 3582 "MAD R1.z, R1, R1.y, c[6].x;\n" 3583 "MAD R1.z, R1, R1.y, -c[6].y;\n" 3584 "MAD R1.y, R1.z, R1, c[6].z;\n" 3585 "MUL R1.x, R1.y, R1;\n" 3586 "ADD R1.y, -R1.x, c[6].w;\n" 3587 "ADD R0.z, -R0.w, R0;\n" 3588 "CMP R0.z, -R0, R1.y, R1.x;\n" 3589 "ADD R0.w, -R0.z, c[7].x;\n" 3590 "CMP R0.x, R0, R0.w, R0.z;\n" 3591 "CMP R0.x, -R0.y, -R0, R0;\n" 3592 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 3593 "TEX R1, R0.zwzw, texture[0], 2D;\n" 3594 "ADD R0.x, R0, c[0];\n" 3595 "MUL R0.x, R0, c[7].y;\n" 3596 "FLR R0.y, R0.x;\n" 3597 "ADD R0.x, R0, -R0.y;\n" 3598 "TEX R0, R0, texture[1], 1D;\n" 3599 "MUL R2.xyz, R0.w, R1;\n" 3600 "MAD R3.xyz, R0, R1.w, R2;\n" 3601 "ADD R2.w, -R1, c[7].z;\n" 3602 "MAD R2.xyz, -R0.w, R1.w, R3;\n" 3603 "MUL R4.xyz, R0.w, R2;\n" 3604 "MAX R2.xyz, R0, c[7].w;\n" 3605 "MUL R5.xyz, R0, R2.w;\n" 3606 "ADD R3.w, -R0, c[7].z;\n" 3607 "RCP R2.x, R2.x;\n" 3608 "RCP R2.y, R2.y;\n" 3609 "RCP R2.z, R2.z;\n" 3610 "MAD R2.xyz, R4, R2, R5;\n" 3611 "MUL R4.xyz, R1, R3.w;\n" 3612 "MAD R1.xyz, R1, R3.w, R2;\n" 3613 "MAD R0.xyz, R0, R2.w, R4;\n" 3614 "MUL R2.x, R0.w, R1.w;\n" 3615 "ADD R2.w, R0, R1;\n" 3616 "ADD R1.xyz, R1, -R0;\n" 3617 "SGE R2.xyz, R3, R2.x;\n" 3618 "MAD result.color.xyz, R2, R1, R0;\n" 3619 "MAD result.color.w, -R0, R1, R2;\n" 3620 "END\n" 3621 ; 3622 3623 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT_NOMASK = 3624 "!!ARBfp1.0\n" 3625 "PARAM c[8] = { program.local[0..4],\n" 3626 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" 3627 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" 3628 " { 3.141593, 0.15915494, 2, 1 } };\n" 3629 "TEMP R0;\n" 3630 "TEMP R1;\n" 3631 "TEMP R2;\n" 3632 "TEMP R3;\n" 3633 "TEMP R4;\n" 3634 "MUL R0.xyz, fragment.position.y, c[2];\n" 3635 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3636 "ADD R0.xyz, R0, c[3];\n" 3637 "RCP R0.z, R0.z;\n" 3638 "MUL R0.xy, R0, R0.z;\n" 3639 "ABS R0.z, R0.x;\n" 3640 "ABS R0.w, R0.y;\n" 3641 "ADD R0.w, R0, -R0.z;\n" 3642 "ADD R1.x, R0.y, c[5];\n" 3643 "ABS R0.w, R0;\n" 3644 "CMP R0.y, -R0.w, R0, R1.x;\n" 3645 "ABS R0.w, -R0.y;\n" 3646 "MAX R1.x, R0.z, R0.w;\n" 3647 "RCP R1.y, R1.x;\n" 3648 "MIN R1.x, R0.z, R0.w;\n" 3649 "MUL R1.x, R1, R1.y;\n" 3650 "MUL R1.y, R1.x, R1.x;\n" 3651 "MAD R1.z, R1.y, c[5].y, c[5];\n" 3652 "MAD R1.z, R1, R1.y, -c[5].w;\n" 3653 "MAD R1.z, R1, R1.y, c[6].x;\n" 3654 "MAD R1.z, R1, R1.y, -c[6].y;\n" 3655 "MAD R1.y, R1.z, R1, c[6].z;\n" 3656 "MUL R1.x, R1.y, R1;\n" 3657 "ADD R0.z, -R0, R0.w;\n" 3658 "ADD R1.y, -R1.x, c[6].w;\n" 3659 "CMP R0.z, -R0, R1.y, R1.x;\n" 3660 "ADD R0.w, -R0.z, c[7].x;\n" 3661 "CMP R0.x, R0, R0.w, R0.z;\n" 3662 "CMP R0.x, -R0.y, -R0, R0;\n" 3663 "ADD R0.x, R0, c[0];\n" 3664 "MUL R0.x, R0, c[7].y;\n" 3665 "FLR R0.y, R0.x;\n" 3666 "ADD R0.x, R0, -R0.y;\n" 3667 "TEX R0, R0, texture[1], 1D;\n" 3668 "MUL R1.xy, fragment.position, c[4];\n" 3669 "TEX R1, R1, texture[0], 2D;\n" 3670 "ADD R2.w, -R1, c[7];\n" 3671 "ADD R3.xyz, R0.w, -R0;\n" 3672 "ADD R2.xyz, R1.w, -R1;\n" 3673 "MUL R2.xyz, R2, R3;\n" 3674 "MUL R2.xyz, R2, c[7].z;\n" 3675 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 3676 "MUL R4.xyz, R0, R2.w;\n" 3677 "MUL R3.xyz, R0, R1;\n" 3678 "MAD R2.xyz, R0, R2.w, R2;\n" 3679 "ADD R2.w, -R0, c[7];\n" 3680 "MUL R0.xyz, R0, c[7].z;\n" 3681 "MAD R2.xyz, R1, R2.w, R2;\n" 3682 "MAD R3.xyz, R3, c[7].z, R4;\n" 3683 "MAD R1.xyz, R1, R2.w, R3;\n" 3684 "ADD R2.w, R0, R1;\n" 3685 "ADD R2.xyz, R2, -R1;\n" 3686 "SGE R0.xyz, R0, R0.w;\n" 3687 "MAD result.color.xyz, R0, R2, R1;\n" 3688 "MAD result.color.w, -R0, R1, R2;\n" 3689 "END\n" 3690 ; 3691 3692 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK = 3693 "!!ARBfp1.0\n" 3694 "PARAM c[10] = { program.local[0..4],\n" 3695 " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n" 3696 " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n" 3697 " { 3.141593, 0.15915494, 1, 2 },\n" 3698 " { 9.9999997e-006, 4, 16, 12 },\n" 3699 " { 3 } };\n" 3700 "TEMP R0;\n" 3701 "TEMP R1;\n" 3702 "TEMP R2;\n" 3703 "TEMP R3;\n" 3704 "TEMP R4;\n" 3705 "TEMP R5;\n" 3706 "TEMP R6;\n" 3707 "MUL R0.xyz, fragment.position.y, c[2];\n" 3708 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3709 "ADD R0.xyz, R0, c[3];\n" 3710 "RCP R0.z, R0.z;\n" 3711 "MUL R0.xy, R0, R0.z;\n" 3712 "ABS R0.w, R0.x;\n" 3713 "ABS R0.z, R0.y;\n" 3714 "ADD R0.z, R0, -R0.w;\n" 3715 "ADD R1.x, R0.y, c[5];\n" 3716 "ABS R0.z, R0;\n" 3717 "CMP R0.y, -R0.z, R0, R1.x;\n" 3718 "ABS R0.z, -R0.y;\n" 3719 "MAX R1.x, R0.w, R0.z;\n" 3720 "RCP R1.y, R1.x;\n" 3721 "MIN R1.x, R0.w, R0.z;\n" 3722 "MUL R1.x, R1, R1.y;\n" 3723 "MUL R1.y, R1.x, R1.x;\n" 3724 "MAD R1.z, R1.y, c[5].y, c[5];\n" 3725 "MAD R1.z, R1, R1.y, -c[5].w;\n" 3726 "MAD R1.z, R1, R1.y, c[6].x;\n" 3727 "MAD R1.z, R1, R1.y, -c[6].y;\n" 3728 "MAD R1.y, R1.z, R1, c[6].z;\n" 3729 "MUL R1.x, R1.y, R1;\n" 3730 "ADD R1.y, -R1.x, c[6].w;\n" 3731 "ADD R0.z, -R0.w, R0;\n" 3732 "CMP R0.z, -R0, R1.y, R1.x;\n" 3733 "ADD R0.w, -R0.z, c[7].x;\n" 3734 "CMP R0.x, R0, R0.w, R0.z;\n" 3735 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 3736 "TEX R1, R0.zwzw, texture[0], 2D;\n" 3737 "CMP R0.x, -R0.y, -R0, R0;\n" 3738 "MAX R0.z, R1.w, c[8].x;\n" 3739 "RCP R2.x, R0.z;\n" 3740 "MUL R3.xyz, R1, R2.x;\n" 3741 "MAD R4.xyz, R3, c[8].z, -c[8].w;\n" 3742 "ADD R0.x, R0, c[0];\n" 3743 "MUL R0.x, R0, c[7].y;\n" 3744 "FLR R0.y, R0.x;\n" 3745 "ADD R0.x, R0, -R0.y;\n" 3746 "TEX R0, R0, texture[1], 1D;\n" 3747 "MAD R2.xyz, R0, c[7].w, -R0.w;\n" 3748 "MAD R4.xyz, R3, R4, c[9].x;\n" 3749 "MUL R5.xyz, R1.w, R2;\n" 3750 "MUL R6.xyz, R5, R4;\n" 3751 "RSQ R2.w, R3.x;\n" 3752 "RCP R4.x, R2.w;\n" 3753 "RSQ R2.w, R3.y;\n" 3754 "RSQ R3.w, R3.z;\n" 3755 "RCP R4.y, R2.w;\n" 3756 "RCP R4.z, R3.w;\n" 3757 "ADD R4.xyz, -R3, R4;\n" 3758 "MUL R6.xyz, R3, R6;\n" 3759 "MUL R4.xyz, R5, R4;\n" 3760 "ADD R3.xyz, -R3, c[7].z;\n" 3761 "MAD R2.xyz, R2, R3, R0.w;\n" 3762 "MUL R3.xyz, R0, c[7].w;\n" 3763 "MAD R5.xyz, R0.w, R1, R6;\n" 3764 "MAD R4.xyz, R0.w, R1, R4;\n" 3765 "ADD R6.xyz, R4, -R5;\n" 3766 "MUL R4.xyz, R1, c[8].y;\n" 3767 "SGE R4.xyz, R4, R1.w;\n" 3768 "MAD R4.xyz, R4, R6, R5;\n" 3769 "MAD R4.xyz, -R1, R2, R4;\n" 3770 "MUL R2.xyz, R1, R2;\n" 3771 "SGE R3.xyz, R3, R0.w;\n" 3772 "MAD R2.xyz, R3, R4, R2;\n" 3773 "ADD R2.w, -R1, c[7].z;\n" 3774 "MAD R2.xyz, R0, R2.w, R2;\n" 3775 "ADD R0.x, R0.w, R1.w;\n" 3776 "ADD R0.y, -R0.w, c[7].z;\n" 3777 "MAD result.color.xyz, R1, R0.y, R2;\n" 3778 "MAD result.color.w, -R0, R1, R0.x;\n" 3779 "END\n" 3780 ; 3781 3782 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE_NOMASK = 3783 "!!ARBfp1.0\n" 3784 "PARAM c[8] = { program.local[0..4],\n" 3785 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3786 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3787 " { 0.33299461, 0.99999559, 2 } };\n" 3788 "TEMP R0;\n" 3789 "TEMP R1;\n" 3790 "TEMP R2;\n" 3791 "TEMP R3;\n" 3792 "MUL R0.xyz, fragment.position.y, c[2];\n" 3793 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3794 "ADD R0.xyz, R0, c[3];\n" 3795 "RCP R0.z, R0.z;\n" 3796 "MUL R0.xy, R0, R0.z;\n" 3797 "ABS R0.z, R0.x;\n" 3798 "ABS R0.w, R0.y;\n" 3799 "ADD R0.w, R0, -R0.z;\n" 3800 "ADD R1.x, R0.y, c[5].y;\n" 3801 "ABS R0.w, R0;\n" 3802 "CMP R0.y, -R0.w, R0, R1.x;\n" 3803 "ABS R0.w, -R0.y;\n" 3804 "MAX R1.x, R0.z, R0.w;\n" 3805 "RCP R1.y, R1.x;\n" 3806 "MIN R1.x, R0.z, R0.w;\n" 3807 "MUL R1.x, R1, R1.y;\n" 3808 "MUL R1.y, R1.x, R1.x;\n" 3809 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" 3810 "MAD R1.z, R1, R1.y, -c[6];\n" 3811 "MAD R1.z, R1, R1.y, c[6].w;\n" 3812 "MAD R1.z, R1, R1.y, -c[7].x;\n" 3813 "MAD R1.y, R1.z, R1, c[7];\n" 3814 "MUL R1.x, R1.y, R1;\n" 3815 "ADD R0.z, -R0, R0.w;\n" 3816 "ADD R1.y, -R1.x, c[5].w;\n" 3817 "CMP R0.z, -R0, R1.y, R1.x;\n" 3818 "ADD R0.w, -R0.z, c[5].z;\n" 3819 "CMP R0.x, R0, R0.w, R0.z;\n" 3820 "CMP R0.x, -R0.y, -R0, R0;\n" 3821 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 3822 "ADD R0.x, R0, c[0];\n" 3823 "MUL R0.x, R0, c[5];\n" 3824 "FLR R0.y, R0.x;\n" 3825 "TEX R1, R0.zwzw, texture[0], 2D;\n" 3826 "ADD R0.x, R0, -R0.y;\n" 3827 "TEX R0, R0, texture[1], 1D;\n" 3828 "MUL R2.xyz, R0, R1.w;\n" 3829 "MUL R3.xyz, R0.w, R1;\n" 3830 "ADD R0.xyz, R0, R1;\n" 3831 "MIN R2.xyz, R2, R3;\n" 3832 "ADD R1.x, R0.w, R1.w;\n" 3833 "MAD result.color.xyz, -R2, c[7].z, R0;\n" 3834 "MAD result.color.w, -R0, R1, R1.x;\n" 3835 "END\n" 3836 ; 3837 3838 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION_NOMASK = 3839 "!!ARBfp1.0\n" 3840 "PARAM c[8] = { program.local[0..4],\n" 3841 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3842 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3843 " { 0.33299461, 0.99999559, 2, 1 } };\n" 3844 "TEMP R0;\n" 3845 "TEMP R1;\n" 3846 "TEMP R2;\n" 3847 "TEMP R3;\n" 3848 "MUL R0.xyz, fragment.position.y, c[2];\n" 3849 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3850 "ADD R0.xyz, R0, c[3];\n" 3851 "RCP R0.z, R0.z;\n" 3852 "MUL R0.xy, R0, R0.z;\n" 3853 "ABS R0.z, R0.x;\n" 3854 "ABS R0.w, R0.y;\n" 3855 "ADD R0.w, R0, -R0.z;\n" 3856 "ADD R1.x, R0.y, c[5].y;\n" 3857 "ABS R0.w, R0;\n" 3858 "CMP R0.y, -R0.w, R0, R1.x;\n" 3859 "ABS R0.w, -R0.y;\n" 3860 "MAX R1.x, R0.z, R0.w;\n" 3861 "RCP R1.y, R1.x;\n" 3862 "MIN R1.x, R0.z, R0.w;\n" 3863 "MUL R1.x, R1, R1.y;\n" 3864 "MUL R1.y, R1.x, R1.x;\n" 3865 "MAD R1.z, R1.y, c[6].x, c[6].y;\n" 3866 "MAD R1.z, R1, R1.y, -c[6];\n" 3867 "MAD R1.z, R1, R1.y, c[6].w;\n" 3868 "MAD R1.z, R1, R1.y, -c[7].x;\n" 3869 "MAD R1.y, R1.z, R1, c[7];\n" 3870 "MUL R1.x, R1.y, R1;\n" 3871 "ADD R0.z, -R0, R0.w;\n" 3872 "ADD R1.y, -R1.x, c[5].w;\n" 3873 "CMP R0.z, -R0, R1.y, R1.x;\n" 3874 "ADD R0.w, -R0.z, c[5].z;\n" 3875 "CMP R0.x, R0, R0.w, R0.z;\n" 3876 "CMP R0.x, -R0.y, -R0, R0;\n" 3877 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 3878 "TEX R1, R0.zwzw, texture[0], 2D;\n" 3879 "ADD R0.x, R0, c[0];\n" 3880 "MUL R0.x, R0, c[5];\n" 3881 "FLR R0.y, R0.x;\n" 3882 "ADD R0.x, R0, -R0.y;\n" 3883 "TEX R0, R0, texture[1], 1D;\n" 3884 "MUL R2.xyz, R0.w, R1;\n" 3885 "MAD R3.xyz, R0, R1.w, R2;\n" 3886 "MUL R2.xyz, R0, R1;\n" 3887 "MAD R2.xyz, -R2, c[7].z, R3;\n" 3888 "ADD R2.w, -R1, c[7];\n" 3889 "MAD R0.xyz, R0, R2.w, R2;\n" 3890 "ADD R2.x, R0.w, R1.w;\n" 3891 "ADD R2.y, -R0.w, c[7].w;\n" 3892 "MAD result.color.xyz, R1, R2.y, R0;\n" 3893 "MAD result.color.w, -R0, R1, R2.x;\n" 3894 "END\n" 3895 ; 3896 3897 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_MASK = 3898 "!!ARBfp1.0\n" 3899 "PARAM c[10] = { program.local[0..6],\n" 3900 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3901 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3902 " { 0.33299461, 0.99999559 } };\n" 3903 "TEMP R0;\n" 3904 "TEMP R1;\n" 3905 "MUL R0.xyz, fragment.position.y, c[2];\n" 3906 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3907 "ADD R0.xyz, R0, c[3];\n" 3908 "RCP R0.z, R0.z;\n" 3909 "MUL R0.xy, R0, R0.z;\n" 3910 "ABS R0.z, R0.x;\n" 3911 "ABS R0.w, R0.y;\n" 3912 "ADD R0.w, R0, -R0.z;\n" 3913 "ADD R1.x, R0.y, c[7].y;\n" 3914 "ABS R0.w, R0;\n" 3915 "CMP R0.y, -R0.w, R0, R1.x;\n" 3916 "ABS R0.w, -R0.y;\n" 3917 "MAX R1.x, R0.z, R0.w;\n" 3918 "RCP R1.y, R1.x;\n" 3919 "MIN R1.x, R0.z, R0.w;\n" 3920 "MUL R1.x, R1, R1.y;\n" 3921 "MUL R1.y, R1.x, R1.x;\n" 3922 "MAD R1.z, R1.y, c[8].x, c[8].y;\n" 3923 "MAD R1.z, R1, R1.y, -c[8];\n" 3924 "MAD R1.z, R1, R1.y, c[8].w;\n" 3925 "MAD R1.z, R1, R1.y, -c[9].x;\n" 3926 "MAD R1.y, R1.z, R1, c[9];\n" 3927 "MUL R1.x, R1.y, R1;\n" 3928 "ADD R1.y, -R1.x, c[7].w;\n" 3929 "ADD R0.z, -R0, R0.w;\n" 3930 "CMP R0.z, -R0, R1.y, R1.x;\n" 3931 "ADD R0.w, -R0.z, c[7].z;\n" 3932 "CMP R0.x, R0, R0.w, R0.z;\n" 3933 "CMP R0.x, -R0.y, -R0, R0;\n" 3934 "ADD R0.x, R0, c[0];\n" 3935 "MUL R1.x, R0, c[7];\n" 3936 "FLR R1.y, R1.x;\n" 3937 "ADD R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 3938 "MUL R0.xy, R0.zwzw, c[4];\n" 3939 "TEX R0, R0, texture[0], 2D;\n" 3940 "ADD R1.x, R1, -R1.y;\n" 3941 "DP4 R1.y, R0, c[6];\n" 3942 "TEX R0, R1, texture[1], 1D;\n" 3943 "MUL result.color, R0, R1.y;\n" 3944 "END\n" 3945 ; 3946 3947 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_NOMASK = 3948 "!!ARBfp1.0\n" 3949 "PARAM c[7] = { program.local[0..3],\n" 3950 " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n" 3951 " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n" 3952 " { 0.33299461, 0.99999559 } };\n" 3953 "TEMP R0;\n" 3954 "TEMP R1;\n" 3955 "MUL R0.xyz, fragment.position.y, c[2];\n" 3956 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 3957 "ADD R0.xyz, R0, c[3];\n" 3958 "RCP R0.z, R0.z;\n" 3959 "MUL R0.xy, R0, R0.z;\n" 3960 "ABS R0.z, R0.x;\n" 3961 "ABS R0.w, R0.y;\n" 3962 "ADD R0.w, R0, -R0.z;\n" 3963 "ADD R1.x, R0.y, c[4].y;\n" 3964 "ABS R0.w, R0;\n" 3965 "CMP R0.y, -R0.w, R0, R1.x;\n" 3966 "ABS R0.w, -R0.y;\n" 3967 "MAX R1.x, R0.z, R0.w;\n" 3968 "RCP R1.y, R1.x;\n" 3969 "MIN R1.x, R0.z, R0.w;\n" 3970 "MUL R1.x, R1, R1.y;\n" 3971 "MUL R1.y, R1.x, R1.x;\n" 3972 "MAD R1.z, R1.y, c[5].x, c[5].y;\n" 3973 "MAD R1.z, R1, R1.y, -c[5];\n" 3974 "MAD R1.z, R1, R1.y, c[5].w;\n" 3975 "MAD R1.z, R1, R1.y, -c[6].x;\n" 3976 "MAD R1.y, R1.z, R1, c[6];\n" 3977 "MUL R1.x, R1.y, R1;\n" 3978 "ADD R0.z, -R0, R0.w;\n" 3979 "ADD R1.y, -R1.x, c[4].w;\n" 3980 "CMP R0.z, -R0, R1.y, R1.x;\n" 3981 "ADD R0.w, -R0.z, c[4].z;\n" 3982 "CMP R0.x, R0, R0.w, R0.z;\n" 3983 "CMP R0.x, -R0.y, -R0, R0;\n" 3984 "ADD R0.x, R0, c[0];\n" 3985 "MUL R0.x, R0, c[4];\n" 3986 "FLR R0.y, R0.x;\n" 3987 "ADD R0.x, R0, -R0.y;\n" 3988 "TEX result.color, R0, texture[0], 1D;\n" 3989 "END\n" 3990 ; 3991 3992 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = 3993 "!!ARBfp1.0\n" 3994 "PARAM c[11] = { program.local[0..9],\n" 3995 " { 1 } };\n" 3996 "TEMP R0;\n" 3997 "TEMP R1;\n" 3998 "TEMP R2;\n" 3999 "TEMP R3;\n" 4000 "MUL R0.xyz, fragment.position.y, c[2];\n" 4001 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4002 "ADD R0.xyz, R0, c[3];\n" 4003 "RCP R0.z, R0.z;\n" 4004 "MUL R0.xy, R0, R0.z;\n" 4005 "MUL R0.zw, R0.xyxy, c[0].xyxy;\n" 4006 "ADD R1.x, R0.z, R0.w;\n" 4007 "MUL R0.xy, fragment.position, c[7];\n" 4008 "TEX R0, R0, texture[0], 2D;\n" 4009 "MUL R1.x, R1, c[0].z;\n" 4010 "TEX R1, R1, texture[2], 1D;\n" 4011 "MUL R2.xyz, R0, c[4].y;\n" 4012 "MUL R3.xyz, R1.w, R2;\n" 4013 "MUL R2.xyz, R1, c[4].x;\n" 4014 "MAD R2.xyz, R0.w, R2, R3;\n" 4015 "ADD R3.xy, fragment.position, c[8];\n" 4016 "ADD R2.w, -R0, c[10].x;\n" 4017 "MUL R1.xyz, R1, c[5].y;\n" 4018 "MAD R2.xyz, R2.w, R1, R2;\n" 4019 "MUL R1.xyz, R0, c[5].z;\n" 4020 "ADD R3.z, -R1.w, c[10].x;\n" 4021 "MAD R2.xyz, R3.z, R1, R2;\n" 4022 "MUL R1.y, R1.w, R2.w;\n" 4023 "MUL R1.x, R1.w, R0.w;\n" 4024 "MUL R1.z, R0.w, R3;\n" 4025 "DP3 R2.w, R1, c[5];\n" 4026 "MUL R3.xy, R3, c[6];\n" 4027 "TEX R1, R3, texture[1], 2D;\n" 4028 "ADD R2, R2, -R0;\n" 4029 "DP4 R1.x, R1, c[9];\n" 4030 "MAD result.color, R1.x, R2, R0;\n" 4031 "END\n" 4032 ; 4033 4034 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY = 4035 "!!ARBfp1.0\n" 4036 "PARAM c[9] = { program.local[0..7],\n" 4037 " { 1 } };\n" 4038 "TEMP R0;\n" 4039 "TEMP R1;\n" 4040 "TEMP R2;\n" 4041 "MUL R0.xyz, fragment.position.y, c[2];\n" 4042 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4043 "ADD R0.xyz, R0, c[3];\n" 4044 "RCP R0.z, R0.z;\n" 4045 "MUL R0.xy, R0, R0.z;\n" 4046 "MUL R0.zw, R0.xyxy, c[0].xyxy;\n" 4047 "ADD R1.x, R0.z, R0.w;\n" 4048 "MUL R0.xy, fragment.position, c[5];\n" 4049 "TEX R0, R0, texture[0], 2D;\n" 4050 "MUL R1.x, R1, c[0].z;\n" 4051 "TEX R1, R1, texture[2], 1D;\n" 4052 "ADD R2.x, -R0.w, c[8];\n" 4053 "MUL R2.xyz, R1, R2.x;\n" 4054 "MAD R1.xyz, R1, R0, R2;\n" 4055 "ADD R2.x, -R1.w, c[8];\n" 4056 "MAD R2.xyz, R0, R2.x, R1;\n" 4057 "ADD R1.z, R1.w, R0.w;\n" 4058 "MAD R2.w, -R1, R0, R1.z;\n" 4059 "ADD R1.xy, fragment.position, c[6];\n" 4060 "MUL R1.xy, R1, c[4];\n" 4061 "TEX R1, R1, texture[1], 2D;\n" 4062 "ADD R2, R2, -R0;\n" 4063 "DP4 R1.x, R1, c[7];\n" 4064 "MAD result.color, R1.x, R2, R0;\n" 4065 "END\n" 4066 ; 4067 4068 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN = 4069 "!!ARBfp1.0\n" 4070 "PARAM c[8] = { program.local[0..7] };\n" 4071 "TEMP R0;\n" 4072 "TEMP R1;\n" 4073 "TEMP R2;\n" 4074 "TEMP R3;\n" 4075 "MUL R0.xyz, fragment.position.y, c[2];\n" 4076 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4077 "ADD R0.xyz, R0, c[3];\n" 4078 "RCP R0.z, R0.z;\n" 4079 "MUL R0.xy, R0, R0.z;\n" 4080 "MUL R0.xy, R0, c[0];\n" 4081 "ADD R0.x, R0, R0.y;\n" 4082 "MUL R0.z, R0.x, c[0];\n" 4083 "ADD R3.xy, fragment.position, c[6];\n" 4084 "TEX R1, R0.z, texture[2], 1D;\n" 4085 "MUL R0.xy, fragment.position, c[5];\n" 4086 "TEX R0, R0, texture[0], 2D;\n" 4087 "ADD R2, R1, R0;\n" 4088 "MAD R2, -R1, R0, R2;\n" 4089 "MUL R3.xy, R3, c[4];\n" 4090 "TEX R1, R3, texture[1], 2D;\n" 4091 "ADD R2, R2, -R0;\n" 4092 "DP4 R1.x, R1, c[7];\n" 4093 "MAD result.color, R1.x, R2, R0;\n" 4094 "END\n" 4095 ; 4096 4097 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY = 4098 "!!ARBfp1.0\n" 4099 "PARAM c[9] = { program.local[0..7],\n" 4100 " { 2, 1 } };\n" 4101 "TEMP R0;\n" 4102 "TEMP R1;\n" 4103 "TEMP R2;\n" 4104 "TEMP R3;\n" 4105 "TEMP R4;\n" 4106 "MUL R0.xyz, fragment.position.y, c[2];\n" 4107 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4108 "ADD R0.xyz, R0, c[3];\n" 4109 "RCP R0.z, R0.z;\n" 4110 "MUL R0.xy, R0, R0.z;\n" 4111 "MUL R0.xy, R0, c[0];\n" 4112 "ADD R0.x, R0, R0.y;\n" 4113 "MUL R0.x, R0, c[0].z;\n" 4114 "TEX R0, R0, texture[2], 1D;\n" 4115 "MUL R1.xy, fragment.position, c[5];\n" 4116 "TEX R1, R1, texture[0], 2D;\n" 4117 "ADD R2.w, -R1, c[8].y;\n" 4118 "ADD R3.xyz, R0.w, -R0;\n" 4119 "ADD R2.xyz, R1.w, -R1;\n" 4120 "MUL R2.xyz, R2, R3;\n" 4121 "MUL R2.xyz, R2, c[8].x;\n" 4122 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 4123 "MUL R4.xyz, R0, R2.w;\n" 4124 "MUL R3.xyz, R0, R1;\n" 4125 "MAD R0.xyz, R0, R2.w, R2;\n" 4126 "ADD R2.x, -R0.w, c[8].y;\n" 4127 "MAD R3.xyz, R3, c[8].x, R4;\n" 4128 "MAD R3.xyz, R1, R2.x, R3;\n" 4129 "MAD R0.xyz, R1, R2.x, R0;\n" 4130 "MUL R2.xyz, R1, c[8].x;\n" 4131 "ADD R0.xyz, R0, -R3;\n" 4132 "SGE R2.xyz, R2, R1.w;\n" 4133 "MAD R2.xyz, R2, R0, R3;\n" 4134 "ADD R0.z, R0.w, R1.w;\n" 4135 "MAD R2.w, -R0, R1, R0.z;\n" 4136 "ADD R0.xy, fragment.position, c[6];\n" 4137 "MUL R0.xy, R0, c[4];\n" 4138 "TEX R0, R0, texture[1], 2D;\n" 4139 "ADD R2, R2, -R1;\n" 4140 "DP4 R0.x, R0, c[7];\n" 4141 "MAD result.color, R0.x, R2, R1;\n" 4142 "END\n" 4143 ; 4144 4145 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN = 4146 "!!ARBfp1.0\n" 4147 "PARAM c[9] = { program.local[0..7],\n" 4148 " { 1 } };\n" 4149 "TEMP R0;\n" 4150 "TEMP R1;\n" 4151 "TEMP R2;\n" 4152 "TEMP R3;\n" 4153 "MUL R0.xyz, fragment.position.y, c[2];\n" 4154 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4155 "ADD R0.xyz, R0, c[3];\n" 4156 "RCP R0.z, R0.z;\n" 4157 "MUL R0.xy, R0, R0.z;\n" 4158 "MUL R0.xy, R0, c[0];\n" 4159 "ADD R0.z, R0.x, R0.y;\n" 4160 "MUL R1.x, R0.z, c[0].z;\n" 4161 "MUL R0.xy, fragment.position, c[5];\n" 4162 "TEX R0, R0, texture[0], 2D;\n" 4163 "TEX R1, R1, texture[2], 1D;\n" 4164 "MUL R3.xyz, R1.w, R0;\n" 4165 "MUL R2.xyz, R1, R0.w;\n" 4166 "MIN R2.xyz, R2, R3;\n" 4167 "ADD R2.w, -R0, c[8].x;\n" 4168 "MAD R1.xyz, R1, R2.w, R2;\n" 4169 "ADD R2.x, -R1.w, c[8];\n" 4170 "MAD R2.xyz, R0, R2.x, R1;\n" 4171 "ADD R1.z, R1.w, R0.w;\n" 4172 "MAD R2.w, -R1, R0, R1.z;\n" 4173 "ADD R1.xy, fragment.position, c[6];\n" 4174 "MUL R1.xy, R1, c[4];\n" 4175 "TEX R1, R1, texture[1], 2D;\n" 4176 "ADD R2, R2, -R0;\n" 4177 "DP4 R1.x, R1, c[7];\n" 4178 "MAD result.color, R1.x, R2, R0;\n" 4179 "END\n" 4180 ; 4181 4182 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN = 4183 "!!ARBfp1.0\n" 4184 "PARAM c[9] = { program.local[0..7],\n" 4185 " { 1 } };\n" 4186 "TEMP R0;\n" 4187 "TEMP R1;\n" 4188 "TEMP R2;\n" 4189 "TEMP R3;\n" 4190 "MUL R0.xyz, fragment.position.y, c[2];\n" 4191 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4192 "ADD R0.xyz, R0, c[3];\n" 4193 "RCP R0.z, R0.z;\n" 4194 "MUL R0.xy, R0, R0.z;\n" 4195 "MUL R0.xy, R0, c[0];\n" 4196 "ADD R0.z, R0.x, R0.y;\n" 4197 "MUL R1.x, R0.z, c[0].z;\n" 4198 "MUL R0.xy, fragment.position, c[5];\n" 4199 "TEX R0, R0, texture[0], 2D;\n" 4200 "TEX R1, R1, texture[2], 1D;\n" 4201 "MUL R3.xyz, R1.w, R0;\n" 4202 "MUL R2.xyz, R1, R0.w;\n" 4203 "MAX R2.xyz, R2, R3;\n" 4204 "ADD R2.w, -R0, c[8].x;\n" 4205 "MAD R1.xyz, R1, R2.w, R2;\n" 4206 "ADD R2.x, -R1.w, c[8];\n" 4207 "MAD R2.xyz, R0, R2.x, R1;\n" 4208 "ADD R1.z, R1.w, R0.w;\n" 4209 "MAD R2.w, -R1, R0, R1.z;\n" 4210 "ADD R1.xy, fragment.position, c[6];\n" 4211 "MUL R1.xy, R1, c[4];\n" 4212 "TEX R1, R1, texture[1], 2D;\n" 4213 "ADD R2, R2, -R0;\n" 4214 "DP4 R1.x, R1, c[7];\n" 4215 "MAD result.color, R1.x, R2, R0;\n" 4216 "END\n" 4217 ; 4218 4219 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE = 4220 "!!ARBfp1.0\n" 4221 "PARAM c[9] = { program.local[0..7],\n" 4222 " { 1, 1e-006 } };\n" 4223 "TEMP R0;\n" 4224 "TEMP R1;\n" 4225 "TEMP R2;\n" 4226 "TEMP R3;\n" 4227 "TEMP R4;\n" 4228 "MUL R0.xyz, fragment.position.y, c[2];\n" 4229 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4230 "ADD R0.xyz, R0, c[3];\n" 4231 "RCP R0.z, R0.z;\n" 4232 "MUL R0.xy, R0, R0.z;\n" 4233 "MUL R0.xy, R0, c[0];\n" 4234 "ADD R0.x, R0, R0.y;\n" 4235 "MUL R0.x, R0, c[0].z;\n" 4236 "TEX R0, R0, texture[2], 1D;\n" 4237 "MAX R1.x, R0.w, c[8].y;\n" 4238 "RCP R1.x, R1.x;\n" 4239 "MAD R2.xyz, -R0, R1.x, c[8].x;\n" 4240 "MAX R2.xyz, R2, c[8].y;\n" 4241 "MUL R1.xy, fragment.position, c[5];\n" 4242 "TEX R1, R1, texture[0], 2D;\n" 4243 "ADD R2.w, -R0, c[8].x;\n" 4244 "MUL R3.xyz, R1, R2.w;\n" 4245 "ADD R2.w, -R1, c[8].x;\n" 4246 "MAD R4.xyz, R0, R2.w, R3;\n" 4247 "MUL R3.xyz, R0.w, R1;\n" 4248 "MUL R2.w, R0, R1;\n" 4249 "MAD R0.xyz, R0, R1.w, R3;\n" 4250 "SGE R0.xyz, R0, R2.w;\n" 4251 "RCP R2.x, R2.x;\n" 4252 "RCP R2.y, R2.y;\n" 4253 "RCP R2.z, R2.z;\n" 4254 "MAD R2.xyz, R3, R2, R4;\n" 4255 "MAD R4.xyz, R0.w, R1.w, R4;\n" 4256 "ADD R4.xyz, R4, -R2;\n" 4257 "MAD R2.xyz, R0, R4, R2;\n" 4258 "ADD R0.z, R0.w, R1.w;\n" 4259 "MAD R2.w, -R0, R1, R0.z;\n" 4260 "ADD R0.xy, fragment.position, c[6];\n" 4261 "MUL R0.xy, R0, c[4];\n" 4262 "TEX R0, R0, texture[1], 2D;\n" 4263 "ADD R2, R2, -R1;\n" 4264 "DP4 R0.x, R0, c[7];\n" 4265 "MAD result.color, R0.x, R2, R1;\n" 4266 "END\n" 4267 ; 4268 4269 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN = 4270 "!!ARBfp1.0\n" 4271 "PARAM c[9] = { program.local[0..7],\n" 4272 " { 1, 9.9999997e-006 } };\n" 4273 "TEMP R0;\n" 4274 "TEMP R1;\n" 4275 "TEMP R2;\n" 4276 "TEMP R3;\n" 4277 "TEMP R4;\n" 4278 "TEMP R5;\n" 4279 "MUL R0.xyz, fragment.position.y, c[2];\n" 4280 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4281 "ADD R0.xyz, R0, c[3];\n" 4282 "RCP R0.z, R0.z;\n" 4283 "MUL R0.xy, R0, R0.z;\n" 4284 "MUL R0.xy, R0, c[0];\n" 4285 "ADD R0.x, R0, R0.y;\n" 4286 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 4287 "TEX R1, R0.zwzw, texture[0], 2D;\n" 4288 "MUL R0.x, R0, c[0].z;\n" 4289 "TEX R0, R0, texture[2], 1D;\n" 4290 "MUL R2.xyz, R0.w, R1;\n" 4291 "MAD R3.xyz, R0, R1.w, R2;\n" 4292 "MAD R2.xyz, -R0.w, R1.w, R3;\n" 4293 "MUL R4.xyz, R0.w, R2;\n" 4294 "MAX R2.xyz, R0, c[8].y;\n" 4295 "ADD R2.w, -R1, c[8].x;\n" 4296 "MUL R5.xyz, R0, R2.w;\n" 4297 "ADD R3.w, -R0, c[8].x;\n" 4298 "RCP R2.x, R2.x;\n" 4299 "RCP R2.y, R2.y;\n" 4300 "RCP R2.z, R2.z;\n" 4301 "MAD R2.xyz, R4, R2, R5;\n" 4302 "MUL R4.xyz, R1, R3.w;\n" 4303 "MAD R0.xyz, R0, R2.w, R4;\n" 4304 "MUL R2.w, R0, R1;\n" 4305 "MAD R2.xyz, R1, R3.w, R2;\n" 4306 "ADD R2.xyz, R2, -R0;\n" 4307 "SGE R3.xyz, R3, R2.w;\n" 4308 "MAD R2.xyz, R3, R2, R0;\n" 4309 "ADD R0.z, R0.w, R1.w;\n" 4310 "MAD R2.w, -R0, R1, R0.z;\n" 4311 "ADD R0.xy, fragment.position, c[6];\n" 4312 "MUL R0.xy, R0, c[4];\n" 4313 "TEX R0, R0, texture[1], 2D;\n" 4314 "ADD R2, R2, -R1;\n" 4315 "DP4 R0.x, R0, c[7];\n" 4316 "MAD result.color, R0.x, R2, R1;\n" 4317 "END\n" 4318 ; 4319 4320 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT = 4321 "!!ARBfp1.0\n" 4322 "PARAM c[9] = { program.local[0..7],\n" 4323 " { 2, 1 } };\n" 4324 "TEMP R0;\n" 4325 "TEMP R1;\n" 4326 "TEMP R2;\n" 4327 "TEMP R3;\n" 4328 "TEMP R4;\n" 4329 "MUL R0.xyz, fragment.position.y, c[2];\n" 4330 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4331 "ADD R0.xyz, R0, c[3];\n" 4332 "RCP R0.z, R0.z;\n" 4333 "MUL R0.xy, R0, R0.z;\n" 4334 "MUL R0.xy, R0, c[0];\n" 4335 "ADD R0.x, R0, R0.y;\n" 4336 "MUL R0.x, R0, c[0].z;\n" 4337 "TEX R0, R0, texture[2], 1D;\n" 4338 "MUL R1.xy, fragment.position, c[5];\n" 4339 "TEX R1, R1, texture[0], 2D;\n" 4340 "ADD R2.w, -R1, c[8].y;\n" 4341 "ADD R3.xyz, R0.w, -R0;\n" 4342 "ADD R2.xyz, R1.w, -R1;\n" 4343 "MUL R2.xyz, R2, R3;\n" 4344 "MUL R2.xyz, R2, c[8].x;\n" 4345 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 4346 "MUL R4.xyz, R0, R2.w;\n" 4347 "MAD R2.xyz, R0, R2.w, R2;\n" 4348 "MUL R3.xyz, R0, R1;\n" 4349 "ADD R2.w, -R0, c[8].y;\n" 4350 "MAD R3.xyz, R3, c[8].x, R4;\n" 4351 "MUL R0.xyz, R0, c[8].x;\n" 4352 "SGE R0.xyz, R0, R0.w;\n" 4353 "MAD R3.xyz, R1, R2.w, R3;\n" 4354 "MAD R2.xyz, R1, R2.w, R2;\n" 4355 "ADD R2.xyz, R2, -R3;\n" 4356 "MAD R2.xyz, R0, R2, R3;\n" 4357 "ADD R0.z, R0.w, R1.w;\n" 4358 "MAD R2.w, -R0, R1, R0.z;\n" 4359 "ADD R0.xy, fragment.position, c[6];\n" 4360 "MUL R0.xy, R0, c[4];\n" 4361 "TEX R0, R0, texture[1], 2D;\n" 4362 "ADD R2, R2, -R1;\n" 4363 "DP4 R0.x, R0, c[7];\n" 4364 "MAD result.color, R0.x, R2, R1;\n" 4365 "END\n" 4366 ; 4367 4368 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT = 4369 "!!ARBfp1.0\n" 4370 "PARAM c[10] = { program.local[0..7],\n" 4371 " { 1, 2, 9.9999997e-006, 4 },\n" 4372 " { 16, 12, 3 } };\n" 4373 "TEMP R0;\n" 4374 "TEMP R1;\n" 4375 "TEMP R2;\n" 4376 "TEMP R3;\n" 4377 "TEMP R4;\n" 4378 "TEMP R5;\n" 4379 "TEMP R6;\n" 4380 "MUL R0.xyz, fragment.position.y, c[2];\n" 4381 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4382 "ADD R0.xyz, R0, c[3];\n" 4383 "RCP R0.z, R0.z;\n" 4384 "MUL R0.xy, R0, R0.z;\n" 4385 "MUL R0.xy, R0, c[0];\n" 4386 "ADD R0.x, R0, R0.y;\n" 4387 "MUL R1.xy, fragment.position, c[5];\n" 4388 "TEX R1, R1, texture[0], 2D;\n" 4389 "MAX R0.z, R1.w, c[8];\n" 4390 "RCP R0.z, R0.z;\n" 4391 "MUL R3.xyz, R1, R0.z;\n" 4392 "MAD R2.xyz, R3, c[9].x, -c[9].y;\n" 4393 "MUL R0.x, R0, c[0].z;\n" 4394 "TEX R0, R0, texture[2], 1D;\n" 4395 "MAD R4.xyz, R3, R2, c[9].z;\n" 4396 "MAD R2.xyz, R0, c[8].y, -R0.w;\n" 4397 "MUL R5.xyz, R1.w, R2;\n" 4398 "MUL R6.xyz, R5, R4;\n" 4399 "RSQ R2.w, R3.x;\n" 4400 "RCP R4.x, R2.w;\n" 4401 "RSQ R2.w, R3.y;\n" 4402 "RSQ R3.w, R3.z;\n" 4403 "RCP R4.y, R2.w;\n" 4404 "RCP R4.z, R3.w;\n" 4405 "ADD R4.xyz, -R3, R4;\n" 4406 "MUL R6.xyz, R3, R6;\n" 4407 "MUL R4.xyz, R5, R4;\n" 4408 "ADD R3.xyz, -R3, c[8].x;\n" 4409 "MAD R2.xyz, R2, R3, R0.w;\n" 4410 "MUL R3.xyz, R0, c[8].y;\n" 4411 "MAD R5.xyz, R0.w, R1, R6;\n" 4412 "MAD R4.xyz, R0.w, R1, R4;\n" 4413 "ADD R6.xyz, R4, -R5;\n" 4414 "MUL R4.xyz, R1, c[8].w;\n" 4415 "SGE R4.xyz, R4, R1.w;\n" 4416 "MAD R4.xyz, R4, R6, R5;\n" 4417 "MAD R4.xyz, -R1, R2, R4;\n" 4418 "SGE R3.xyz, R3, R0.w;\n" 4419 "MUL R2.xyz, R1, R2;\n" 4420 "ADD R2.w, -R1, c[8].x;\n" 4421 "MAD R2.xyz, R3, R4, R2;\n" 4422 "MAD R2.xyz, R0, R2.w, R2;\n" 4423 "ADD R0.x, -R0.w, c[8];\n" 4424 "MAD R2.xyz, R1, R0.x, R2;\n" 4425 "ADD R0.z, R0.w, R1.w;\n" 4426 "MAD R2.w, -R0, R1, R0.z;\n" 4427 "ADD R0.xy, fragment.position, c[6];\n" 4428 "MUL R0.xy, R0, c[4];\n" 4429 "TEX R0, R0, texture[1], 2D;\n" 4430 "ADD R2, R2, -R1;\n" 4431 "DP4 R0.x, R0, c[7];\n" 4432 "MAD result.color, R0.x, R2, R1;\n" 4433 "END\n" 4434 ; 4435 4436 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE = 4437 "!!ARBfp1.0\n" 4438 "PARAM c[9] = { program.local[0..7],\n" 4439 " { 2 } };\n" 4440 "TEMP R0;\n" 4441 "TEMP R1;\n" 4442 "TEMP R2;\n" 4443 "TEMP R3;\n" 4444 "MUL R0.xyz, fragment.position.y, c[2];\n" 4445 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4446 "ADD R0.xyz, R0, c[3];\n" 4447 "RCP R0.z, R0.z;\n" 4448 "MUL R0.xy, R0, R0.z;\n" 4449 "MUL R0.xy, R0, c[0];\n" 4450 "ADD R0.z, R0.x, R0.y;\n" 4451 "MUL R1.x, R0.z, c[0].z;\n" 4452 "MUL R0.xy, fragment.position, c[5];\n" 4453 "TEX R0, R0, texture[0], 2D;\n" 4454 "TEX R1, R1, texture[2], 1D;\n" 4455 "ADD R2.xyz, R1, R0;\n" 4456 "MUL R3.xyz, R1.w, R0;\n" 4457 "MUL R1.xyz, R1, R0.w;\n" 4458 "MIN R1.xyz, R1, R3;\n" 4459 "MAD R2.xyz, -R1, c[8].x, R2;\n" 4460 "ADD R1.z, R1.w, R0.w;\n" 4461 "MAD R2.w, -R1, R0, R1.z;\n" 4462 "ADD R1.xy, fragment.position, c[6];\n" 4463 "MUL R1.xy, R1, c[4];\n" 4464 "TEX R1, R1, texture[1], 2D;\n" 4465 "ADD R2, R2, -R0;\n" 4466 "DP4 R1.x, R1, c[7];\n" 4467 "MAD result.color, R1.x, R2, R0;\n" 4468 "END\n" 4469 ; 4470 4471 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION = 4472 "!!ARBfp1.0\n" 4473 "PARAM c[9] = { program.local[0..7],\n" 4474 " { 2, 1 } };\n" 4475 "TEMP R0;\n" 4476 "TEMP R1;\n" 4477 "TEMP R2;\n" 4478 "TEMP R3;\n" 4479 "MUL R0.xyz, fragment.position.y, c[2];\n" 4480 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4481 "ADD R0.xyz, R0, c[3];\n" 4482 "RCP R0.z, R0.z;\n" 4483 "MUL R0.xy, R0, R0.z;\n" 4484 "MUL R0.xy, R0, c[0];\n" 4485 "ADD R0.z, R0.x, R0.y;\n" 4486 "MUL R1.x, R0.z, c[0].z;\n" 4487 "MUL R0.xy, fragment.position, c[5];\n" 4488 "TEX R0, R0, texture[0], 2D;\n" 4489 "TEX R1, R1, texture[2], 1D;\n" 4490 "MUL R2.xyz, R1.w, R0;\n" 4491 "MAD R3.xyz, R1, R0.w, R2;\n" 4492 "MUL R2.xyz, R1, R0;\n" 4493 "MAD R2.xyz, -R2, c[8].x, R3;\n" 4494 "ADD R2.w, -R0, c[8].y;\n" 4495 "MAD R1.xyz, R1, R2.w, R2;\n" 4496 "ADD R2.x, -R1.w, c[8].y;\n" 4497 "MAD R2.xyz, R0, R2.x, R1;\n" 4498 "ADD R1.z, R1.w, R0.w;\n" 4499 "MAD R2.w, -R1, R0, R1.z;\n" 4500 "ADD R1.xy, fragment.position, c[6];\n" 4501 "MUL R1.xy, R1, c[4];\n" 4502 "TEX R1, R1, texture[1], 2D;\n" 4503 "ADD R2, R2, -R0;\n" 4504 "DP4 R1.x, R1, c[7];\n" 4505 "MAD result.color, R1.x, R2, R0;\n" 4506 "END\n" 4507 ; 4508 4509 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = 4510 "!!ARBfp1.0\n" 4511 "PARAM c[8] = { program.local[0..6],\n" 4512 " { 1 } };\n" 4513 "TEMP R0;\n" 4514 "TEMP R1;\n" 4515 "TEMP R2;\n" 4516 "TEMP R3;\n" 4517 "MUL R0.xyz, fragment.position.y, c[2];\n" 4518 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4519 "ADD R0.xyz, R0, c[3];\n" 4520 "RCP R0.z, R0.z;\n" 4521 "MUL R0.xy, R0, R0.z;\n" 4522 "MUL R0.xy, R0, c[0];\n" 4523 "ADD R0.x, R0, R0.y;\n" 4524 "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n" 4525 "TEX R1, R0.zwzw, texture[0], 2D;\n" 4526 "MUL R2.xyz, R1, c[4].y;\n" 4527 "MUL R0.x, R0, c[0].z;\n" 4528 "TEX R0, R0, texture[1], 1D;\n" 4529 "MUL R3.xyz, R0.w, R2;\n" 4530 "MUL R2.xyz, R0, c[4].x;\n" 4531 "MAD R2.xyz, R1.w, R2, R3;\n" 4532 "ADD R2.w, -R1, c[7].x;\n" 4533 "MUL R0.xyz, R0, c[5].y;\n" 4534 "MAD R0.xyz, R2.w, R0, R2;\n" 4535 "ADD R2.x, -R0.w, c[7];\n" 4536 "MUL R1.xyz, R1, c[5].z;\n" 4537 "MAD result.color.xyz, R2.x, R1, R0;\n" 4538 "MUL R0.x, R0.w, R1.w;\n" 4539 "MUL R0.z, R1.w, R2.x;\n" 4540 "MUL R0.y, R0.w, R2.w;\n" 4541 "DP3 result.color.w, R0, c[5];\n" 4542 "END\n" 4543 ; 4544 4545 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY_NOMASK = 4546 "!!ARBfp1.0\n" 4547 "PARAM c[6] = { program.local[0..4],\n" 4548 " { 1 } };\n" 4549 "TEMP R0;\n" 4550 "TEMP R1;\n" 4551 "TEMP R2;\n" 4552 "MUL R0.xyz, fragment.position.y, c[2];\n" 4553 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4554 "ADD R0.xyz, R0, c[3];\n" 4555 "RCP R0.z, R0.z;\n" 4556 "MUL R0.xy, R0, R0.z;\n" 4557 "MUL R0.xy, R0, c[0];\n" 4558 "ADD R0.x, R0, R0.y;\n" 4559 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 4560 "TEX R1, R0.zwzw, texture[0], 2D;\n" 4561 "MUL R0.x, R0, c[0].z;\n" 4562 "TEX R0, R0, texture[1], 1D;\n" 4563 "ADD R2.x, -R1.w, c[5];\n" 4564 "MUL R2.xyz, R0, R2.x;\n" 4565 "MAD R0.xyz, R0, R1, R2;\n" 4566 "ADD R2.x, R0.w, R1.w;\n" 4567 "ADD R2.y, -R0.w, c[5].x;\n" 4568 "MAD result.color.xyz, R1, R2.y, R0;\n" 4569 "MAD result.color.w, -R0, R1, R2.x;\n" 4570 "END\n" 4571 ; 4572 4573 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN_NOMASK = 4574 "!!ARBfp1.0\n" 4575 "PARAM c[5] = { program.local[0..4] };\n" 4576 "TEMP R0;\n" 4577 "TEMP R1;\n" 4578 "TEMP R2;\n" 4579 "MUL R0.xyz, fragment.position.y, c[2];\n" 4580 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4581 "ADD R0.xyz, R0, c[3];\n" 4582 "RCP R0.z, R0.z;\n" 4583 "MUL R0.xy, R0, R0.z;\n" 4584 "MUL R0.xy, R0, c[0];\n" 4585 "ADD R0.x, R0, R0.y;\n" 4586 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 4587 "TEX R1, R0.zwzw, texture[0], 2D;\n" 4588 "MUL R0.x, R0, c[0].z;\n" 4589 "TEX R0, R0, texture[1], 1D;\n" 4590 "ADD R2, R0, R1;\n" 4591 "MAD result.color, -R0, R1, R2;\n" 4592 "END\n" 4593 ; 4594 4595 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY_NOMASK = 4596 "!!ARBfp1.0\n" 4597 "PARAM c[6] = { program.local[0..4],\n" 4598 " { 2, 1 } };\n" 4599 "TEMP R0;\n" 4600 "TEMP R1;\n" 4601 "TEMP R2;\n" 4602 "TEMP R3;\n" 4603 "MUL R0.xyz, fragment.position.y, c[2];\n" 4604 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4605 "ADD R0.xyz, R0, c[3];\n" 4606 "RCP R0.z, R0.z;\n" 4607 "MUL R0.xy, R0, R0.z;\n" 4608 "MUL R0.xy, R0, c[0];\n" 4609 "ADD R0.x, R0, R0.y;\n" 4610 "MUL R0.x, R0, c[0].z;\n" 4611 "TEX R0, R0, texture[1], 1D;\n" 4612 "MUL R1.xy, fragment.position, c[4];\n" 4613 "TEX R1, R1, texture[0], 2D;\n" 4614 "ADD R3.xyz, R0.w, -R0;\n" 4615 "ADD R2.xyz, R1.w, -R1;\n" 4616 "MUL R2.xyz, R2, R3;\n" 4617 "ADD R2.w, -R1, c[5].y;\n" 4618 "MUL R2.xyz, R2, c[5].x;\n" 4619 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 4620 "MAD R2.xyz, R0, R2.w, R2;\n" 4621 "MUL R3.xyz, R0, R2.w;\n" 4622 "MUL R0.xyz, R0, R1;\n" 4623 "ADD R2.w, -R0, c[5].y;\n" 4624 "MAD R0.xyz, R0, c[5].x, R3;\n" 4625 "MAD R0.xyz, R1, R2.w, R0;\n" 4626 "MAD R2.xyz, R1, R2.w, R2;\n" 4627 "MUL R1.xyz, R1, c[5].x;\n" 4628 "ADD R2.w, R0, R1;\n" 4629 "ADD R2.xyz, R2, -R0;\n" 4630 "SGE R1.xyz, R1, R1.w;\n" 4631 "MAD result.color.xyz, R1, R2, R0;\n" 4632 "MAD result.color.w, -R0, R1, R2;\n" 4633 "END\n" 4634 ; 4635 4636 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN_NOMASK = 4637 "!!ARBfp1.0\n" 4638 "PARAM c[6] = { program.local[0..4],\n" 4639 " { 1 } };\n" 4640 "TEMP R0;\n" 4641 "TEMP R1;\n" 4642 "TEMP R2;\n" 4643 "TEMP R3;\n" 4644 "MUL R0.xyz, fragment.position.y, c[2];\n" 4645 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4646 "ADD R0.xyz, R0, c[3];\n" 4647 "RCP R0.z, R0.z;\n" 4648 "MUL R0.xy, R0, R0.z;\n" 4649 "MUL R0.xy, R0, c[0];\n" 4650 "ADD R0.x, R0, R0.y;\n" 4651 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 4652 "TEX R1, R0.zwzw, texture[0], 2D;\n" 4653 "MUL R0.x, R0, c[0].z;\n" 4654 "TEX R0, R0, texture[1], 1D;\n" 4655 "MUL R2.xyz, R0, R1.w;\n" 4656 "MUL R3.xyz, R0.w, R1;\n" 4657 "MIN R2.xyz, R2, R3;\n" 4658 "ADD R2.w, -R1, c[5].x;\n" 4659 "MAD R0.xyz, R0, R2.w, R2;\n" 4660 "ADD R2.x, R0.w, R1.w;\n" 4661 "ADD R2.y, -R0.w, c[5].x;\n" 4662 "MAD result.color.xyz, R1, R2.y, R0;\n" 4663 "MAD result.color.w, -R0, R1, R2.x;\n" 4664 "END\n" 4665 ; 4666 4667 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN_NOMASK = 4668 "!!ARBfp1.0\n" 4669 "PARAM c[6] = { program.local[0..4],\n" 4670 " { 1 } };\n" 4671 "TEMP R0;\n" 4672 "TEMP R1;\n" 4673 "TEMP R2;\n" 4674 "TEMP R3;\n" 4675 "MUL R0.xyz, fragment.position.y, c[2];\n" 4676 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4677 "ADD R0.xyz, R0, c[3];\n" 4678 "RCP R0.z, R0.z;\n" 4679 "MUL R0.xy, R0, R0.z;\n" 4680 "MUL R0.xy, R0, c[0];\n" 4681 "ADD R0.x, R0, R0.y;\n" 4682 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 4683 "TEX R1, R0.zwzw, texture[0], 2D;\n" 4684 "MUL R0.x, R0, c[0].z;\n" 4685 "TEX R0, R0, texture[1], 1D;\n" 4686 "MUL R2.xyz, R0, R1.w;\n" 4687 "MUL R3.xyz, R0.w, R1;\n" 4688 "MAX R2.xyz, R2, R3;\n" 4689 "ADD R2.w, -R1, c[5].x;\n" 4690 "MAD R0.xyz, R0, R2.w, R2;\n" 4691 "ADD R2.x, R0.w, R1.w;\n" 4692 "ADD R2.y, -R0.w, c[5].x;\n" 4693 "MAD result.color.xyz, R1, R2.y, R0;\n" 4694 "MAD result.color.w, -R0, R1, R2.x;\n" 4695 "END\n" 4696 ; 4697 4698 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE_NOMASK = 4699 "!!ARBfp1.0\n" 4700 "PARAM c[6] = { program.local[0..4],\n" 4701 " { 1, 1e-006 } };\n" 4702 "TEMP R0;\n" 4703 "TEMP R1;\n" 4704 "TEMP R2;\n" 4705 "TEMP R3;\n" 4706 "MUL R0.xyz, fragment.position.y, c[2];\n" 4707 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4708 "ADD R0.xyz, R0, c[3];\n" 4709 "RCP R0.z, R0.z;\n" 4710 "MUL R0.xy, R0, R0.z;\n" 4711 "MUL R0.xy, R0, c[0];\n" 4712 "ADD R0.x, R0, R0.y;\n" 4713 "MUL R0.x, R0, c[0].z;\n" 4714 "TEX R0, R0, texture[1], 1D;\n" 4715 "MAX R1.x, R0.w, c[5].y;\n" 4716 "RCP R1.x, R1.x;\n" 4717 "MAD R3.xyz, -R0, R1.x, c[5].x;\n" 4718 "MAX R3.xyz, R3, c[5].y;\n" 4719 "MUL R1.xy, fragment.position, c[4];\n" 4720 "TEX R1, R1, texture[0], 2D;\n" 4721 "ADD R2.x, -R0.w, c[5];\n" 4722 "MUL R2.xyz, R1, R2.x;\n" 4723 "ADD R2.w, -R1, c[5].x;\n" 4724 "MAD R2.xyz, R0, R2.w, R2;\n" 4725 "MUL R1.xyz, R0.w, R1;\n" 4726 "MAD R0.xyz, R0, R1.w, R1;\n" 4727 "MUL R2.w, R0, R1;\n" 4728 "RCP R3.x, R3.x;\n" 4729 "RCP R3.y, R3.y;\n" 4730 "RCP R3.z, R3.z;\n" 4731 "MAD R3.xyz, R1, R3, R2;\n" 4732 "MAD R2.xyz, R0.w, R1.w, R2;\n" 4733 "ADD R1.x, R0.w, R1.w;\n" 4734 "ADD R2.xyz, R2, -R3;\n" 4735 "SGE R0.xyz, R0, R2.w;\n" 4736 "MAD result.color.xyz, R0, R2, R3;\n" 4737 "MAD result.color.w, -R0, R1, R1.x;\n" 4738 "END\n" 4739 ; 4740 4741 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN_NOMASK = 4742 "!!ARBfp1.0\n" 4743 "PARAM c[6] = { program.local[0..4],\n" 4744 " { 1, 9.9999997e-006 } };\n" 4745 "TEMP R0;\n" 4746 "TEMP R1;\n" 4747 "TEMP R2;\n" 4748 "TEMP R3;\n" 4749 "TEMP R4;\n" 4750 "TEMP R5;\n" 4751 "MUL R0.xyz, fragment.position.y, c[2];\n" 4752 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4753 "ADD R0.xyz, R0, c[3];\n" 4754 "RCP R0.z, R0.z;\n" 4755 "MUL R0.xy, R0, R0.z;\n" 4756 "MUL R0.xy, R0, c[0];\n" 4757 "ADD R0.x, R0, R0.y;\n" 4758 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 4759 "TEX R1, R0.zwzw, texture[0], 2D;\n" 4760 "MUL R0.x, R0, c[0].z;\n" 4761 "TEX R0, R0, texture[1], 1D;\n" 4762 "MUL R2.xyz, R0.w, R1;\n" 4763 "MAD R3.xyz, R0, R1.w, R2;\n" 4764 "ADD R2.w, -R1, c[5].x;\n" 4765 "MAD R2.xyz, -R0.w, R1.w, R3;\n" 4766 "MUL R4.xyz, R0.w, R2;\n" 4767 "MAX R2.xyz, R0, c[5].y;\n" 4768 "MUL R5.xyz, R0, R2.w;\n" 4769 "ADD R3.w, -R0, c[5].x;\n" 4770 "RCP R2.x, R2.x;\n" 4771 "RCP R2.y, R2.y;\n" 4772 "RCP R2.z, R2.z;\n" 4773 "MAD R2.xyz, R4, R2, R5;\n" 4774 "MUL R4.xyz, R1, R3.w;\n" 4775 "MAD R1.xyz, R1, R3.w, R2;\n" 4776 "MAD R0.xyz, R0, R2.w, R4;\n" 4777 "MUL R2.x, R0.w, R1.w;\n" 4778 "ADD R2.w, R0, R1;\n" 4779 "ADD R1.xyz, R1, -R0;\n" 4780 "SGE R2.xyz, R3, R2.x;\n" 4781 "MAD result.color.xyz, R2, R1, R0;\n" 4782 "MAD result.color.w, -R0, R1, R2;\n" 4783 "END\n" 4784 ; 4785 4786 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT_NOMASK = 4787 "!!ARBfp1.0\n" 4788 "PARAM c[6] = { program.local[0..4],\n" 4789 " { 2, 1 } };\n" 4790 "TEMP R0;\n" 4791 "TEMP R1;\n" 4792 "TEMP R2;\n" 4793 "TEMP R3;\n" 4794 "TEMP R4;\n" 4795 "MUL R0.xyz, fragment.position.y, c[2];\n" 4796 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4797 "ADD R0.xyz, R0, c[3];\n" 4798 "RCP R0.z, R0.z;\n" 4799 "MUL R0.xy, R0, R0.z;\n" 4800 "MUL R0.xy, R0, c[0];\n" 4801 "ADD R0.x, R0, R0.y;\n" 4802 "MUL R0.x, R0, c[0].z;\n" 4803 "TEX R0, R0, texture[1], 1D;\n" 4804 "MUL R1.xy, fragment.position, c[4];\n" 4805 "TEX R1, R1, texture[0], 2D;\n" 4806 "ADD R2.w, -R1, c[5].y;\n" 4807 "ADD R3.xyz, R0.w, -R0;\n" 4808 "ADD R2.xyz, R1.w, -R1;\n" 4809 "MUL R2.xyz, R2, R3;\n" 4810 "MUL R2.xyz, R2, c[5].x;\n" 4811 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 4812 "MAD R2.xyz, R0, R2.w, R2;\n" 4813 "MUL R4.xyz, R0, R2.w;\n" 4814 "MUL R3.xyz, R0, R1;\n" 4815 "MUL R0.xyz, R0, c[5].x;\n" 4816 "ADD R2.w, -R0, c[5].y;\n" 4817 "MAD R3.xyz, R3, c[5].x, R4;\n" 4818 "MAD R3.xyz, R1, R2.w, R3;\n" 4819 "MAD R1.xyz, R1, R2.w, R2;\n" 4820 "ADD R2.x, R0.w, R1.w;\n" 4821 "ADD R1.xyz, R1, -R3;\n" 4822 "SGE R0.xyz, R0, R0.w;\n" 4823 "MAD result.color.xyz, R0, R1, R3;\n" 4824 "MAD result.color.w, -R0, R1, R2.x;\n" 4825 "END\n" 4826 ; 4827 4828 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT_NOMASK = 4829 "!!ARBfp1.0\n" 4830 "PARAM c[7] = { program.local[0..4],\n" 4831 " { 1, 2, 9.9999997e-006, 4 },\n" 4832 " { 16, 12, 3 } };\n" 4833 "TEMP R0;\n" 4834 "TEMP R1;\n" 4835 "TEMP R2;\n" 4836 "TEMP R3;\n" 4837 "TEMP R4;\n" 4838 "TEMP R5;\n" 4839 "TEMP R6;\n" 4840 "MUL R0.xyz, fragment.position.y, c[2];\n" 4841 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4842 "ADD R0.xyz, R0, c[3];\n" 4843 "RCP R0.z, R0.z;\n" 4844 "MUL R0.xy, R0, R0.z;\n" 4845 "MUL R0.xy, R0, c[0];\n" 4846 "ADD R0.x, R0, R0.y;\n" 4847 "MUL R1.xy, fragment.position, c[4];\n" 4848 "TEX R1, R1, texture[0], 2D;\n" 4849 "MAX R0.z, R1.w, c[5];\n" 4850 "RCP R0.z, R0.z;\n" 4851 "MUL R3.xyz, R1, R0.z;\n" 4852 "MAD R2.xyz, R3, c[6].x, -c[6].y;\n" 4853 "MUL R0.x, R0, c[0].z;\n" 4854 "TEX R0, R0, texture[1], 1D;\n" 4855 "MAD R4.xyz, R3, R2, c[6].z;\n" 4856 "MAD R2.xyz, R0, c[5].y, -R0.w;\n" 4857 "MUL R5.xyz, R1.w, R2;\n" 4858 "MUL R6.xyz, R5, R4;\n" 4859 "RSQ R2.w, R3.x;\n" 4860 "RCP R4.x, R2.w;\n" 4861 "RSQ R2.w, R3.y;\n" 4862 "RSQ R3.w, R3.z;\n" 4863 "RCP R4.y, R2.w;\n" 4864 "RCP R4.z, R3.w;\n" 4865 "ADD R4.xyz, -R3, R4;\n" 4866 "MUL R6.xyz, R3, R6;\n" 4867 "MUL R4.xyz, R5, R4;\n" 4868 "ADD R3.xyz, -R3, c[5].x;\n" 4869 "MAD R2.xyz, R2, R3, R0.w;\n" 4870 "MUL R3.xyz, R0, c[5].y;\n" 4871 "MAD R5.xyz, R0.w, R1, R6;\n" 4872 "MAD R4.xyz, R0.w, R1, R4;\n" 4873 "ADD R6.xyz, R4, -R5;\n" 4874 "MUL R4.xyz, R1, c[5].w;\n" 4875 "SGE R4.xyz, R4, R1.w;\n" 4876 "MAD R4.xyz, R4, R6, R5;\n" 4877 "MAD R4.xyz, -R1, R2, R4;\n" 4878 "MUL R2.xyz, R1, R2;\n" 4879 "SGE R3.xyz, R3, R0.w;\n" 4880 "MAD R2.xyz, R3, R4, R2;\n" 4881 "ADD R2.w, -R1, c[5].x;\n" 4882 "MAD R2.xyz, R0, R2.w, R2;\n" 4883 "ADD R0.x, R0.w, R1.w;\n" 4884 "ADD R0.y, -R0.w, c[5].x;\n" 4885 "MAD result.color.xyz, R1, R0.y, R2;\n" 4886 "MAD result.color.w, -R0, R1, R0.x;\n" 4887 "END\n" 4888 ; 4889 4890 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE_NOMASK = 4891 "!!ARBfp1.0\n" 4892 "PARAM c[6] = { program.local[0..4],\n" 4893 " { 2 } };\n" 4894 "TEMP R0;\n" 4895 "TEMP R1;\n" 4896 "TEMP R2;\n" 4897 "TEMP R3;\n" 4898 "MUL R0.xyz, fragment.position.y, c[2];\n" 4899 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4900 "ADD R0.xyz, R0, c[3];\n" 4901 "RCP R0.z, R0.z;\n" 4902 "MUL R0.xy, R0, R0.z;\n" 4903 "MUL R0.xy, R0, c[0];\n" 4904 "ADD R0.x, R0, R0.y;\n" 4905 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 4906 "TEX R1, R0.zwzw, texture[0], 2D;\n" 4907 "MUL R0.x, R0, c[0].z;\n" 4908 "TEX R0, R0, texture[1], 1D;\n" 4909 "MUL R2.xyz, R0, R1.w;\n" 4910 "MUL R3.xyz, R0.w, R1;\n" 4911 "ADD R0.xyz, R0, R1;\n" 4912 "MIN R2.xyz, R2, R3;\n" 4913 "ADD R1.x, R0.w, R1.w;\n" 4914 "MAD result.color.xyz, -R2, c[5].x, R0;\n" 4915 "MAD result.color.w, -R0, R1, R1.x;\n" 4916 "END\n" 4917 ; 4918 4919 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION_NOMASK = 4920 "!!ARBfp1.0\n" 4921 "PARAM c[6] = { program.local[0..4],\n" 4922 " { 2, 1 } };\n" 4923 "TEMP R0;\n" 4924 "TEMP R1;\n" 4925 "TEMP R2;\n" 4926 "TEMP R3;\n" 4927 "MUL R0.xyz, fragment.position.y, c[2];\n" 4928 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4929 "ADD R0.xyz, R0, c[3];\n" 4930 "RCP R0.z, R0.z;\n" 4931 "MUL R0.xy, R0, R0.z;\n" 4932 "MUL R0.xy, R0, c[0];\n" 4933 "ADD R0.x, R0, R0.y;\n" 4934 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 4935 "TEX R1, R0.zwzw, texture[0], 2D;\n" 4936 "MUL R0.x, R0, c[0].z;\n" 4937 "TEX R0, R0, texture[1], 1D;\n" 4938 "MUL R2.xyz, R0.w, R1;\n" 4939 "MAD R3.xyz, R0, R1.w, R2;\n" 4940 "MUL R2.xyz, R0, R1;\n" 4941 "MAD R2.xyz, -R2, c[5].x, R3;\n" 4942 "ADD R2.w, -R1, c[5].y;\n" 4943 "MAD R0.xyz, R0, R2.w, R2;\n" 4944 "ADD R2.x, R0.w, R1.w;\n" 4945 "ADD R2.y, -R0.w, c[5];\n" 4946 "MAD result.color.xyz, R1, R2.y, R0;\n" 4947 "MAD result.color.w, -R0, R1, R2.x;\n" 4948 "END\n" 4949 ; 4950 4951 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_MASK = 4952 "!!ARBfp1.0\n" 4953 "PARAM c[7] = { program.local[0..6] };\n" 4954 "TEMP R0;\n" 4955 "TEMP R1;\n" 4956 "MUL R0.xyz, fragment.position.y, c[2];\n" 4957 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4958 "ADD R0.xyz, R0, c[3];\n" 4959 "RCP R0.z, R0.z;\n" 4960 "MUL R0.zw, R0.xyxy, R0.z;\n" 4961 "MUL R0.zw, R0, c[0].xyxy;\n" 4962 "ADD R1.x, R0.z, R0.w;\n" 4963 "ADD R0.xy, fragment.position, c[5];\n" 4964 "MUL R0.xy, R0, c[4];\n" 4965 "TEX R0, R0, texture[0], 2D;\n" 4966 "DP4 R1.y, R0, c[6];\n" 4967 "MUL R1.x, R1, c[0].z;\n" 4968 "TEX R0, R1, texture[1], 1D;\n" 4969 "MUL result.color, R0, R1.y;\n" 4970 "END\n" 4971 ; 4972 4973 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_NOMASK = 4974 "!!ARBfp1.0\n" 4975 "PARAM c[4] = { program.local[0..3] };\n" 4976 "TEMP R0;\n" 4977 "MUL R0.xyz, fragment.position.y, c[2];\n" 4978 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4979 "ADD R0.xyz, R0, c[3];\n" 4980 "RCP R0.z, R0.z;\n" 4981 "MUL R0.xy, R0, R0.z;\n" 4982 "MUL R0.xy, R0, c[0];\n" 4983 "ADD R0.x, R0, R0.y;\n" 4984 "MUL R0.x, R0, c[0].z;\n" 4985 "TEX result.color, R0, texture[0], 1D;\n" 4986 "END\n" 4987 ; 4988 4989 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = 4990 "!!ARBfp1.0\n" 4991 "PARAM c[11] = { program.local[0..9],\n" 4992 " { 1 } };\n" 4993 "TEMP R0;\n" 4994 "TEMP R1;\n" 4995 "TEMP R2;\n" 4996 "TEMP R3;\n" 4997 "MUL R0.xyz, fragment.position.y, c[2];\n" 4998 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 4999 "ADD R1.xyz, R0, c[3];\n" 5000 "RCP R0.z, R1.z;\n" 5001 "MUL R1.xy, R1, R0.z;\n" 5002 "MUL R0.xy, fragment.position, c[7];\n" 5003 "TEX R0, R0, texture[0], 2D;\n" 5004 "MUL R1.xy, R1, c[0];\n" 5005 "TEX R1, R1, texture[2], 2D;\n" 5006 "MUL R2.xyz, R0, c[4].y;\n" 5007 "MUL R3.xyz, R1.w, R2;\n" 5008 "MUL R2.xyz, R1, c[4].x;\n" 5009 "MAD R2.xyz, R0.w, R2, R3;\n" 5010 "ADD R3.xy, fragment.position, c[8];\n" 5011 "ADD R2.w, -R0, c[10].x;\n" 5012 "MUL R1.xyz, R1, c[5].y;\n" 5013 "MAD R2.xyz, R2.w, R1, R2;\n" 5014 "MUL R1.xyz, R0, c[5].z;\n" 5015 "ADD R3.z, -R1.w, c[10].x;\n" 5016 "MAD R2.xyz, R3.z, R1, R2;\n" 5017 "MUL R1.y, R1.w, R2.w;\n" 5018 "MUL R1.x, R1.w, R0.w;\n" 5019 "MUL R1.z, R0.w, R3;\n" 5020 "DP3 R2.w, R1, c[5];\n" 5021 "MUL R3.xy, R3, c[6];\n" 5022 "TEX R1, R3, texture[1], 2D;\n" 5023 "ADD R2, R2, -R0;\n" 5024 "DP4 R1.x, R1, c[9];\n" 5025 "MAD result.color, R1.x, R2, R0;\n" 5026 "END\n" 5027 ; 5028 5029 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY = 5030 "!!ARBfp1.0\n" 5031 "PARAM c[9] = { program.local[0..7],\n" 5032 " { 1 } };\n" 5033 "TEMP R0;\n" 5034 "TEMP R1;\n" 5035 "TEMP R2;\n" 5036 "MUL R0.xyz, fragment.position.y, c[2];\n" 5037 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5038 "ADD R1.xyz, R0, c[3];\n" 5039 "RCP R0.z, R1.z;\n" 5040 "MUL R1.xy, R1, R0.z;\n" 5041 "MUL R0.xy, fragment.position, c[5];\n" 5042 "TEX R0, R0, texture[0], 2D;\n" 5043 "MUL R1.xy, R1, c[0];\n" 5044 "TEX R1, R1, texture[2], 2D;\n" 5045 "ADD R2.x, -R0.w, c[8];\n" 5046 "MUL R2.xyz, R1, R2.x;\n" 5047 "MAD R1.xyz, R1, R0, R2;\n" 5048 "ADD R2.x, -R1.w, c[8];\n" 5049 "MAD R2.xyz, R0, R2.x, R1;\n" 5050 "ADD R1.z, R1.w, R0.w;\n" 5051 "MAD R2.w, -R1, R0, R1.z;\n" 5052 "ADD R1.xy, fragment.position, c[6];\n" 5053 "MUL R1.xy, R1, c[4];\n" 5054 "TEX R1, R1, texture[1], 2D;\n" 5055 "ADD R2, R2, -R0;\n" 5056 "DP4 R1.x, R1, c[7];\n" 5057 "MAD result.color, R1.x, R2, R0;\n" 5058 "END\n" 5059 ; 5060 5061 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN = 5062 "!!ARBfp1.0\n" 5063 "PARAM c[8] = { program.local[0..7] };\n" 5064 "TEMP R0;\n" 5065 "TEMP R1;\n" 5066 "TEMP R2;\n" 5067 "TEMP R3;\n" 5068 "MUL R0.xyz, fragment.position.y, c[2];\n" 5069 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5070 "ADD R0.xyz, R0, c[3];\n" 5071 "RCP R0.z, R0.z;\n" 5072 "MUL R0.xy, R0, R0.z;\n" 5073 "MUL R0.zw, R0.xyxy, c[0].xyxy;\n" 5074 "ADD R3.xy, fragment.position, c[6];\n" 5075 "TEX R1, R0.zwzw, texture[2], 2D;\n" 5076 "MUL R0.xy, fragment.position, c[5];\n" 5077 "TEX R0, R0, texture[0], 2D;\n" 5078 "ADD R2, R1, R0;\n" 5079 "MAD R2, -R1, R0, R2;\n" 5080 "MUL R3.xy, R3, c[4];\n" 5081 "TEX R1, R3, texture[1], 2D;\n" 5082 "ADD R2, R2, -R0;\n" 5083 "DP4 R1.x, R1, c[7];\n" 5084 "MAD result.color, R1.x, R2, R0;\n" 5085 "END\n" 5086 ; 5087 5088 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY = 5089 "!!ARBfp1.0\n" 5090 "PARAM c[9] = { program.local[0..7],\n" 5091 " { 2, 1 } };\n" 5092 "TEMP R0;\n" 5093 "TEMP R1;\n" 5094 "TEMP R2;\n" 5095 "TEMP R3;\n" 5096 "TEMP R4;\n" 5097 "MUL R0.xyz, fragment.position.y, c[2];\n" 5098 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5099 "ADD R0.xyz, R0, c[3];\n" 5100 "RCP R0.z, R0.z;\n" 5101 "MUL R0.xy, R0, R0.z;\n" 5102 "MUL R0.xy, R0, c[0];\n" 5103 "TEX R0, R0, texture[2], 2D;\n" 5104 "MUL R1.xy, fragment.position, c[5];\n" 5105 "TEX R1, R1, texture[0], 2D;\n" 5106 "ADD R2.w, -R1, c[8].y;\n" 5107 "ADD R3.xyz, R0.w, -R0;\n" 5108 "ADD R2.xyz, R1.w, -R1;\n" 5109 "MUL R2.xyz, R2, R3;\n" 5110 "MUL R2.xyz, R2, c[8].x;\n" 5111 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 5112 "MUL R4.xyz, R0, R2.w;\n" 5113 "MUL R3.xyz, R0, R1;\n" 5114 "MAD R0.xyz, R0, R2.w, R2;\n" 5115 "ADD R2.x, -R0.w, c[8].y;\n" 5116 "MAD R3.xyz, R3, c[8].x, R4;\n" 5117 "MAD R3.xyz, R1, R2.x, R3;\n" 5118 "MAD R0.xyz, R1, R2.x, R0;\n" 5119 "MUL R2.xyz, R1, c[8].x;\n" 5120 "ADD R0.xyz, R0, -R3;\n" 5121 "SGE R2.xyz, R2, R1.w;\n" 5122 "MAD R2.xyz, R2, R0, R3;\n" 5123 "ADD R0.z, R0.w, R1.w;\n" 5124 "MAD R2.w, -R0, R1, R0.z;\n" 5125 "ADD R0.xy, fragment.position, c[6];\n" 5126 "MUL R0.xy, R0, c[4];\n" 5127 "TEX R0, R0, texture[1], 2D;\n" 5128 "ADD R2, R2, -R1;\n" 5129 "DP4 R0.x, R0, c[7];\n" 5130 "MAD result.color, R0.x, R2, R1;\n" 5131 "END\n" 5132 ; 5133 5134 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN = 5135 "!!ARBfp1.0\n" 5136 "PARAM c[9] = { program.local[0..7],\n" 5137 " { 1 } };\n" 5138 "TEMP R0;\n" 5139 "TEMP R1;\n" 5140 "TEMP R2;\n" 5141 "TEMP R3;\n" 5142 "MUL R0.xyz, fragment.position.y, c[2];\n" 5143 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5144 "ADD R0.xyz, R0, c[3];\n" 5145 "RCP R0.z, R0.z;\n" 5146 "MUL R0.zw, R0.xyxy, R0.z;\n" 5147 "MUL R1.xy, R0.zwzw, c[0];\n" 5148 "MUL R0.xy, fragment.position, c[5];\n" 5149 "TEX R0, R0, texture[0], 2D;\n" 5150 "TEX R1, R1, texture[2], 2D;\n" 5151 "MUL R3.xyz, R1.w, R0;\n" 5152 "MUL R2.xyz, R1, R0.w;\n" 5153 "MIN R2.xyz, R2, R3;\n" 5154 "ADD R2.w, -R0, c[8].x;\n" 5155 "MAD R1.xyz, R1, R2.w, R2;\n" 5156 "ADD R2.x, -R1.w, c[8];\n" 5157 "MAD R2.xyz, R0, R2.x, R1;\n" 5158 "ADD R1.z, R1.w, R0.w;\n" 5159 "MAD R2.w, -R1, R0, R1.z;\n" 5160 "ADD R1.xy, fragment.position, c[6];\n" 5161 "MUL R1.xy, R1, c[4];\n" 5162 "TEX R1, R1, texture[1], 2D;\n" 5163 "ADD R2, R2, -R0;\n" 5164 "DP4 R1.x, R1, c[7];\n" 5165 "MAD result.color, R1.x, R2, R0;\n" 5166 "END\n" 5167 ; 5168 5169 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN = 5170 "!!ARBfp1.0\n" 5171 "PARAM c[9] = { program.local[0..7],\n" 5172 " { 1 } };\n" 5173 "TEMP R0;\n" 5174 "TEMP R1;\n" 5175 "TEMP R2;\n" 5176 "TEMP R3;\n" 5177 "MUL R0.xyz, fragment.position.y, c[2];\n" 5178 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5179 "ADD R0.xyz, R0, c[3];\n" 5180 "RCP R0.z, R0.z;\n" 5181 "MUL R0.zw, R0.xyxy, R0.z;\n" 5182 "MUL R1.xy, R0.zwzw, c[0];\n" 5183 "MUL R0.xy, fragment.position, c[5];\n" 5184 "TEX R0, R0, texture[0], 2D;\n" 5185 "TEX R1, R1, texture[2], 2D;\n" 5186 "MUL R3.xyz, R1.w, R0;\n" 5187 "MUL R2.xyz, R1, R0.w;\n" 5188 "MAX R2.xyz, R2, R3;\n" 5189 "ADD R2.w, -R0, c[8].x;\n" 5190 "MAD R1.xyz, R1, R2.w, R2;\n" 5191 "ADD R2.x, -R1.w, c[8];\n" 5192 "MAD R2.xyz, R0, R2.x, R1;\n" 5193 "ADD R1.z, R1.w, R0.w;\n" 5194 "MAD R2.w, -R1, R0, R1.z;\n" 5195 "ADD R1.xy, fragment.position, c[6];\n" 5196 "MUL R1.xy, R1, c[4];\n" 5197 "TEX R1, R1, texture[1], 2D;\n" 5198 "ADD R2, R2, -R0;\n" 5199 "DP4 R1.x, R1, c[7];\n" 5200 "MAD result.color, R1.x, R2, R0;\n" 5201 "END\n" 5202 ; 5203 5204 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE = 5205 "!!ARBfp1.0\n" 5206 "PARAM c[9] = { program.local[0..7],\n" 5207 " { 1, 1e-006 } };\n" 5208 "TEMP R0;\n" 5209 "TEMP R1;\n" 5210 "TEMP R2;\n" 5211 "TEMP R3;\n" 5212 "TEMP R4;\n" 5213 "MUL R0.xyz, fragment.position.y, c[2];\n" 5214 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5215 "ADD R0.xyz, R0, c[3];\n" 5216 "RCP R0.z, R0.z;\n" 5217 "MUL R0.xy, R0, R0.z;\n" 5218 "MUL R0.xy, R0, c[0];\n" 5219 "TEX R0, R0, texture[2], 2D;\n" 5220 "MAX R1.x, R0.w, c[8].y;\n" 5221 "RCP R1.x, R1.x;\n" 5222 "MAD R2.xyz, -R0, R1.x, c[8].x;\n" 5223 "MAX R2.xyz, R2, c[8].y;\n" 5224 "MUL R1.xy, fragment.position, c[5];\n" 5225 "TEX R1, R1, texture[0], 2D;\n" 5226 "ADD R2.w, -R0, c[8].x;\n" 5227 "MUL R3.xyz, R1, R2.w;\n" 5228 "ADD R2.w, -R1, c[8].x;\n" 5229 "MAD R4.xyz, R0, R2.w, R3;\n" 5230 "MUL R3.xyz, R0.w, R1;\n" 5231 "MUL R2.w, R0, R1;\n" 5232 "MAD R0.xyz, R0, R1.w, R3;\n" 5233 "SGE R0.xyz, R0, R2.w;\n" 5234 "RCP R2.x, R2.x;\n" 5235 "RCP R2.y, R2.y;\n" 5236 "RCP R2.z, R2.z;\n" 5237 "MAD R2.xyz, R3, R2, R4;\n" 5238 "MAD R4.xyz, R0.w, R1.w, R4;\n" 5239 "ADD R4.xyz, R4, -R2;\n" 5240 "MAD R2.xyz, R0, R4, R2;\n" 5241 "ADD R0.z, R0.w, R1.w;\n" 5242 "MAD R2.w, -R0, R1, R0.z;\n" 5243 "ADD R0.xy, fragment.position, c[6];\n" 5244 "MUL R0.xy, R0, c[4];\n" 5245 "TEX R0, R0, texture[1], 2D;\n" 5246 "ADD R2, R2, -R1;\n" 5247 "DP4 R0.x, R0, c[7];\n" 5248 "MAD result.color, R0.x, R2, R1;\n" 5249 "END\n" 5250 ; 5251 5252 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN = 5253 "!!ARBfp1.0\n" 5254 "PARAM c[9] = { program.local[0..7],\n" 5255 " { 1, 9.9999997e-006 } };\n" 5256 "TEMP R0;\n" 5257 "TEMP R1;\n" 5258 "TEMP R2;\n" 5259 "TEMP R3;\n" 5260 "TEMP R4;\n" 5261 "TEMP R5;\n" 5262 "MUL R0.xyz, fragment.position.y, c[2];\n" 5263 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5264 "ADD R0.xyz, R0, c[3];\n" 5265 "RCP R0.z, R0.z;\n" 5266 "MUL R0.xy, R0, R0.z;\n" 5267 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 5268 "TEX R1, R0.zwzw, texture[0], 2D;\n" 5269 "MUL R0.xy, R0, c[0];\n" 5270 "TEX R0, R0, texture[2], 2D;\n" 5271 "MUL R2.xyz, R0.w, R1;\n" 5272 "MAD R3.xyz, R0, R1.w, R2;\n" 5273 "MAD R2.xyz, -R0.w, R1.w, R3;\n" 5274 "MUL R4.xyz, R0.w, R2;\n" 5275 "MAX R2.xyz, R0, c[8].y;\n" 5276 "ADD R2.w, -R1, c[8].x;\n" 5277 "MUL R5.xyz, R0, R2.w;\n" 5278 "ADD R3.w, -R0, c[8].x;\n" 5279 "RCP R2.x, R2.x;\n" 5280 "RCP R2.y, R2.y;\n" 5281 "RCP R2.z, R2.z;\n" 5282 "MAD R2.xyz, R4, R2, R5;\n" 5283 "MUL R4.xyz, R1, R3.w;\n" 5284 "MAD R0.xyz, R0, R2.w, R4;\n" 5285 "MUL R2.w, R0, R1;\n" 5286 "MAD R2.xyz, R1, R3.w, R2;\n" 5287 "ADD R2.xyz, R2, -R0;\n" 5288 "SGE R3.xyz, R3, R2.w;\n" 5289 "MAD R2.xyz, R3, R2, R0;\n" 5290 "ADD R0.z, R0.w, R1.w;\n" 5291 "MAD R2.w, -R0, R1, R0.z;\n" 5292 "ADD R0.xy, fragment.position, c[6];\n" 5293 "MUL R0.xy, R0, c[4];\n" 5294 "TEX R0, R0, texture[1], 2D;\n" 5295 "ADD R2, R2, -R1;\n" 5296 "DP4 R0.x, R0, c[7];\n" 5297 "MAD result.color, R0.x, R2, R1;\n" 5298 "END\n" 5299 ; 5300 5301 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT = 5302 "!!ARBfp1.0\n" 5303 "PARAM c[9] = { program.local[0..7],\n" 5304 " { 2, 1 } };\n" 5305 "TEMP R0;\n" 5306 "TEMP R1;\n" 5307 "TEMP R2;\n" 5308 "TEMP R3;\n" 5309 "TEMP R4;\n" 5310 "MUL R0.xyz, fragment.position.y, c[2];\n" 5311 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5312 "ADD R0.xyz, R0, c[3];\n" 5313 "RCP R0.z, R0.z;\n" 5314 "MUL R0.xy, R0, R0.z;\n" 5315 "MUL R0.xy, R0, c[0];\n" 5316 "TEX R0, R0, texture[2], 2D;\n" 5317 "MUL R1.xy, fragment.position, c[5];\n" 5318 "TEX R1, R1, texture[0], 2D;\n" 5319 "ADD R2.w, -R1, c[8].y;\n" 5320 "ADD R3.xyz, R0.w, -R0;\n" 5321 "ADD R2.xyz, R1.w, -R1;\n" 5322 "MUL R2.xyz, R2, R3;\n" 5323 "MUL R2.xyz, R2, c[8].x;\n" 5324 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 5325 "MUL R4.xyz, R0, R2.w;\n" 5326 "MAD R2.xyz, R0, R2.w, R2;\n" 5327 "MUL R3.xyz, R0, R1;\n" 5328 "ADD R2.w, -R0, c[8].y;\n" 5329 "MAD R3.xyz, R3, c[8].x, R4;\n" 5330 "MUL R0.xyz, R0, c[8].x;\n" 5331 "SGE R0.xyz, R0, R0.w;\n" 5332 "MAD R3.xyz, R1, R2.w, R3;\n" 5333 "MAD R2.xyz, R1, R2.w, R2;\n" 5334 "ADD R2.xyz, R2, -R3;\n" 5335 "MAD R2.xyz, R0, R2, R3;\n" 5336 "ADD R0.z, R0.w, R1.w;\n" 5337 "MAD R2.w, -R0, R1, R0.z;\n" 5338 "ADD R0.xy, fragment.position, c[6];\n" 5339 "MUL R0.xy, R0, c[4];\n" 5340 "TEX R0, R0, texture[1], 2D;\n" 5341 "ADD R2, R2, -R1;\n" 5342 "DP4 R0.x, R0, c[7];\n" 5343 "MAD result.color, R0.x, R2, R1;\n" 5344 "END\n" 5345 ; 5346 5347 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT = 5348 "!!ARBfp1.0\n" 5349 "PARAM c[10] = { program.local[0..7],\n" 5350 " { 1, 2, 9.9999997e-006, 4 },\n" 5351 " { 16, 12, 3 } };\n" 5352 "TEMP R0;\n" 5353 "TEMP R1;\n" 5354 "TEMP R2;\n" 5355 "TEMP R3;\n" 5356 "TEMP R4;\n" 5357 "TEMP R5;\n" 5358 "TEMP R6;\n" 5359 "MUL R0.xyz, fragment.position.y, c[2];\n" 5360 "MUL R1.xy, fragment.position, c[5];\n" 5361 "TEX R1, R1, texture[0], 2D;\n" 5362 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5363 "ADD R0.xyz, R0, c[3];\n" 5364 "RCP R0.z, R0.z;\n" 5365 "MUL R0.xy, R0, R0.z;\n" 5366 "MAX R0.w, R1, c[8].z;\n" 5367 "RCP R0.w, R0.w;\n" 5368 "MUL R3.xyz, R1, R0.w;\n" 5369 "MAD R2.xyz, R3, c[9].x, -c[9].y;\n" 5370 "MUL R0.xy, R0, c[0];\n" 5371 "TEX R0, R0, texture[2], 2D;\n" 5372 "MAD R4.xyz, R3, R2, c[9].z;\n" 5373 "MAD R2.xyz, R0, c[8].y, -R0.w;\n" 5374 "MUL R5.xyz, R1.w, R2;\n" 5375 "MUL R6.xyz, R5, R4;\n" 5376 "RSQ R2.w, R3.x;\n" 5377 "RCP R4.x, R2.w;\n" 5378 "RSQ R2.w, R3.y;\n" 5379 "RSQ R3.w, R3.z;\n" 5380 "RCP R4.y, R2.w;\n" 5381 "RCP R4.z, R3.w;\n" 5382 "ADD R4.xyz, -R3, R4;\n" 5383 "MUL R6.xyz, R3, R6;\n" 5384 "MUL R4.xyz, R5, R4;\n" 5385 "ADD R3.xyz, -R3, c[8].x;\n" 5386 "MAD R2.xyz, R2, R3, R0.w;\n" 5387 "MUL R3.xyz, R0, c[8].y;\n" 5388 "MAD R5.xyz, R0.w, R1, R6;\n" 5389 "MAD R4.xyz, R0.w, R1, R4;\n" 5390 "ADD R6.xyz, R4, -R5;\n" 5391 "MUL R4.xyz, R1, c[8].w;\n" 5392 "SGE R4.xyz, R4, R1.w;\n" 5393 "MAD R4.xyz, R4, R6, R5;\n" 5394 "MAD R4.xyz, -R1, R2, R4;\n" 5395 "SGE R3.xyz, R3, R0.w;\n" 5396 "MUL R2.xyz, R1, R2;\n" 5397 "ADD R2.w, -R1, c[8].x;\n" 5398 "MAD R2.xyz, R3, R4, R2;\n" 5399 "MAD R2.xyz, R0, R2.w, R2;\n" 5400 "ADD R0.x, -R0.w, c[8];\n" 5401 "MAD R2.xyz, R1, R0.x, R2;\n" 5402 "ADD R0.z, R0.w, R1.w;\n" 5403 "MAD R2.w, -R0, R1, R0.z;\n" 5404 "ADD R0.xy, fragment.position, c[6];\n" 5405 "MUL R0.xy, R0, c[4];\n" 5406 "TEX R0, R0, texture[1], 2D;\n" 5407 "ADD R2, R2, -R1;\n" 5408 "DP4 R0.x, R0, c[7];\n" 5409 "MAD result.color, R0.x, R2, R1;\n" 5410 "END\n" 5411 ; 5412 5413 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE = 5414 "!!ARBfp1.0\n" 5415 "PARAM c[9] = { program.local[0..7],\n" 5416 " { 2 } };\n" 5417 "TEMP R0;\n" 5418 "TEMP R1;\n" 5419 "TEMP R2;\n" 5420 "TEMP R3;\n" 5421 "MUL R0.xyz, fragment.position.y, c[2];\n" 5422 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5423 "ADD R0.xyz, R0, c[3];\n" 5424 "RCP R0.z, R0.z;\n" 5425 "MUL R0.zw, R0.xyxy, R0.z;\n" 5426 "MUL R1.xy, R0.zwzw, c[0];\n" 5427 "MUL R0.xy, fragment.position, c[5];\n" 5428 "TEX R0, R0, texture[0], 2D;\n" 5429 "TEX R1, R1, texture[2], 2D;\n" 5430 "ADD R2.xyz, R1, R0;\n" 5431 "MUL R3.xyz, R1.w, R0;\n" 5432 "MUL R1.xyz, R1, R0.w;\n" 5433 "MIN R1.xyz, R1, R3;\n" 5434 "MAD R2.xyz, -R1, c[8].x, R2;\n" 5435 "ADD R1.z, R1.w, R0.w;\n" 5436 "MAD R2.w, -R1, R0, R1.z;\n" 5437 "ADD R1.xy, fragment.position, c[6];\n" 5438 "MUL R1.xy, R1, c[4];\n" 5439 "TEX R1, R1, texture[1], 2D;\n" 5440 "ADD R2, R2, -R0;\n" 5441 "DP4 R1.x, R1, c[7];\n" 5442 "MAD result.color, R1.x, R2, R0;\n" 5443 "END\n" 5444 ; 5445 5446 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION = 5447 "!!ARBfp1.0\n" 5448 "PARAM c[9] = { program.local[0..7],\n" 5449 " { 2, 1 } };\n" 5450 "TEMP R0;\n" 5451 "TEMP R1;\n" 5452 "TEMP R2;\n" 5453 "TEMP R3;\n" 5454 "MUL R0.xyz, fragment.position.y, c[2];\n" 5455 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5456 "ADD R0.xyz, R0, c[3];\n" 5457 "RCP R0.z, R0.z;\n" 5458 "MUL R0.zw, R0.xyxy, R0.z;\n" 5459 "MUL R1.xy, R0.zwzw, c[0];\n" 5460 "MUL R0.xy, fragment.position, c[5];\n" 5461 "TEX R0, R0, texture[0], 2D;\n" 5462 "TEX R1, R1, texture[2], 2D;\n" 5463 "MUL R2.xyz, R1.w, R0;\n" 5464 "MAD R3.xyz, R1, R0.w, R2;\n" 5465 "MUL R2.xyz, R1, R0;\n" 5466 "MAD R2.xyz, -R2, c[8].x, R3;\n" 5467 "ADD R2.w, -R0, c[8].y;\n" 5468 "MAD R1.xyz, R1, R2.w, R2;\n" 5469 "ADD R2.x, -R1.w, c[8].y;\n" 5470 "MAD R2.xyz, R0, R2.x, R1;\n" 5471 "ADD R1.z, R1.w, R0.w;\n" 5472 "MAD R2.w, -R1, R0, R1.z;\n" 5473 "ADD R1.xy, fragment.position, c[6];\n" 5474 "MUL R1.xy, R1, c[4];\n" 5475 "TEX R1, R1, texture[1], 2D;\n" 5476 "ADD R2, R2, -R0;\n" 5477 "DP4 R1.x, R1, c[7];\n" 5478 "MAD result.color, R1.x, R2, R0;\n" 5479 "END\n" 5480 ; 5481 5482 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = 5483 "!!ARBfp1.0\n" 5484 "PARAM c[8] = { program.local[0..6],\n" 5485 " { 1 } };\n" 5486 "TEMP R0;\n" 5487 "TEMP R1;\n" 5488 "TEMP R2;\n" 5489 "TEMP R3;\n" 5490 "MUL R0.xyz, fragment.position.y, c[2];\n" 5491 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5492 "ADD R0.xyz, R0, c[3];\n" 5493 "RCP R0.z, R0.z;\n" 5494 "MUL R0.xy, R0, R0.z;\n" 5495 "MUL R1.xy, fragment.position, c[6];\n" 5496 "TEX R1, R1, texture[0], 2D;\n" 5497 "MUL R2.xyz, R1, c[4].y;\n" 5498 "MUL R0.xy, R0, c[0];\n" 5499 "TEX R0, R0, texture[1], 2D;\n" 5500 "MUL R3.xyz, R0.w, R2;\n" 5501 "MUL R2.xyz, R0, c[4].x;\n" 5502 "MAD R2.xyz, R1.w, R2, R3;\n" 5503 "ADD R2.w, -R1, c[7].x;\n" 5504 "MUL R0.xyz, R0, c[5].y;\n" 5505 "MAD R0.xyz, R2.w, R0, R2;\n" 5506 "ADD R2.x, -R0.w, c[7];\n" 5507 "MUL R1.xyz, R1, c[5].z;\n" 5508 "MAD result.color.xyz, R2.x, R1, R0;\n" 5509 "MUL R0.x, R0.w, R1.w;\n" 5510 "MUL R0.z, R1.w, R2.x;\n" 5511 "MUL R0.y, R0.w, R2.w;\n" 5512 "DP3 result.color.w, R0, c[5];\n" 5513 "END\n" 5514 ; 5515 5516 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY_NOMASK = 5517 "!!ARBfp1.0\n" 5518 "PARAM c[6] = { program.local[0..4],\n" 5519 " { 1 } };\n" 5520 "TEMP R0;\n" 5521 "TEMP R1;\n" 5522 "TEMP R2;\n" 5523 "MUL R0.xyz, fragment.position.y, c[2];\n" 5524 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5525 "ADD R0.xyz, R0, c[3];\n" 5526 "RCP R0.z, R0.z;\n" 5527 "MUL R0.xy, R0, R0.z;\n" 5528 "MUL R1.xy, fragment.position, c[4];\n" 5529 "TEX R1, R1, texture[0], 2D;\n" 5530 "MUL R0.xy, R0, c[0];\n" 5531 "TEX R0, R0, texture[1], 2D;\n" 5532 "ADD R2.x, -R1.w, c[5];\n" 5533 "MUL R2.xyz, R0, R2.x;\n" 5534 "MAD R0.xyz, R0, R1, R2;\n" 5535 "ADD R2.x, R0.w, R1.w;\n" 5536 "ADD R2.y, -R0.w, c[5].x;\n" 5537 "MAD result.color.xyz, R1, R2.y, R0;\n" 5538 "MAD result.color.w, -R0, R1, R2.x;\n" 5539 "END\n" 5540 ; 5541 5542 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN_NOMASK = 5543 "!!ARBfp1.0\n" 5544 "PARAM c[5] = { program.local[0..4] };\n" 5545 "TEMP R0;\n" 5546 "TEMP R1;\n" 5547 "TEMP R2;\n" 5548 "MUL R0.xyz, fragment.position.y, c[2];\n" 5549 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5550 "ADD R0.xyz, R0, c[3];\n" 5551 "RCP R0.z, R0.z;\n" 5552 "MUL R0.xy, R0, R0.z;\n" 5553 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 5554 "TEX R1, R0.zwzw, texture[0], 2D;\n" 5555 "MUL R0.xy, R0, c[0];\n" 5556 "TEX R0, R0, texture[1], 2D;\n" 5557 "ADD R2, R0, R1;\n" 5558 "MAD result.color, -R0, R1, R2;\n" 5559 "END\n" 5560 ; 5561 5562 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY_NOMASK = 5563 "!!ARBfp1.0\n" 5564 "PARAM c[6] = { program.local[0..4],\n" 5565 " { 2, 1 } };\n" 5566 "TEMP R0;\n" 5567 "TEMP R1;\n" 5568 "TEMP R2;\n" 5569 "TEMP R3;\n" 5570 "MUL R0.xyz, fragment.position.y, c[2];\n" 5571 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5572 "ADD R0.xyz, R0, c[3];\n" 5573 "RCP R0.z, R0.z;\n" 5574 "MUL R0.xy, R0, R0.z;\n" 5575 "MUL R0.xy, R0, c[0];\n" 5576 "TEX R0, R0, texture[1], 2D;\n" 5577 "MUL R1.xy, fragment.position, c[4];\n" 5578 "TEX R1, R1, texture[0], 2D;\n" 5579 "ADD R3.xyz, R0.w, -R0;\n" 5580 "ADD R2.xyz, R1.w, -R1;\n" 5581 "MUL R2.xyz, R2, R3;\n" 5582 "ADD R2.w, -R1, c[5].y;\n" 5583 "MUL R2.xyz, R2, c[5].x;\n" 5584 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 5585 "MAD R2.xyz, R0, R2.w, R2;\n" 5586 "MUL R3.xyz, R0, R2.w;\n" 5587 "MUL R0.xyz, R0, R1;\n" 5588 "ADD R2.w, -R0, c[5].y;\n" 5589 "MAD R0.xyz, R0, c[5].x, R3;\n" 5590 "MAD R0.xyz, R1, R2.w, R0;\n" 5591 "MAD R2.xyz, R1, R2.w, R2;\n" 5592 "MUL R1.xyz, R1, c[5].x;\n" 5593 "ADD R2.w, R0, R1;\n" 5594 "ADD R2.xyz, R2, -R0;\n" 5595 "SGE R1.xyz, R1, R1.w;\n" 5596 "MAD result.color.xyz, R1, R2, R0;\n" 5597 "MAD result.color.w, -R0, R1, R2;\n" 5598 "END\n" 5599 ; 5600 5601 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN_NOMASK = 5602 "!!ARBfp1.0\n" 5603 "PARAM c[6] = { program.local[0..4],\n" 5604 " { 1 } };\n" 5605 "TEMP R0;\n" 5606 "TEMP R1;\n" 5607 "TEMP R2;\n" 5608 "TEMP R3;\n" 5609 "MUL R0.xyz, fragment.position.y, c[2];\n" 5610 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5611 "ADD R0.xyz, R0, c[3];\n" 5612 "RCP R0.z, R0.z;\n" 5613 "MUL R0.xy, R0, R0.z;\n" 5614 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 5615 "TEX R1, R0.zwzw, texture[0], 2D;\n" 5616 "MUL R0.xy, R0, c[0];\n" 5617 "TEX R0, R0, texture[1], 2D;\n" 5618 "MUL R2.xyz, R0, R1.w;\n" 5619 "MUL R3.xyz, R0.w, R1;\n" 5620 "MIN R2.xyz, R2, R3;\n" 5621 "ADD R2.w, -R1, c[5].x;\n" 5622 "MAD R0.xyz, R0, R2.w, R2;\n" 5623 "ADD R2.x, R0.w, R1.w;\n" 5624 "ADD R2.y, -R0.w, c[5].x;\n" 5625 "MAD result.color.xyz, R1, R2.y, R0;\n" 5626 "MAD result.color.w, -R0, R1, R2.x;\n" 5627 "END\n" 5628 ; 5629 5630 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN_NOMASK = 5631 "!!ARBfp1.0\n" 5632 "PARAM c[6] = { program.local[0..4],\n" 5633 " { 1 } };\n" 5634 "TEMP R0;\n" 5635 "TEMP R1;\n" 5636 "TEMP R2;\n" 5637 "TEMP R3;\n" 5638 "MUL R0.xyz, fragment.position.y, c[2];\n" 5639 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5640 "ADD R0.xyz, R0, c[3];\n" 5641 "RCP R0.z, R0.z;\n" 5642 "MUL R0.xy, R0, R0.z;\n" 5643 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 5644 "TEX R1, R0.zwzw, texture[0], 2D;\n" 5645 "MUL R0.xy, R0, c[0];\n" 5646 "TEX R0, R0, texture[1], 2D;\n" 5647 "MUL R2.xyz, R0, R1.w;\n" 5648 "MUL R3.xyz, R0.w, R1;\n" 5649 "MAX R2.xyz, R2, R3;\n" 5650 "ADD R2.w, -R1, c[5].x;\n" 5651 "MAD R0.xyz, R0, R2.w, R2;\n" 5652 "ADD R2.x, R0.w, R1.w;\n" 5653 "ADD R2.y, -R0.w, c[5].x;\n" 5654 "MAD result.color.xyz, R1, R2.y, R0;\n" 5655 "MAD result.color.w, -R0, R1, R2.x;\n" 5656 "END\n" 5657 ; 5658 5659 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE_NOMASK = 5660 "!!ARBfp1.0\n" 5661 "PARAM c[6] = { program.local[0..4],\n" 5662 " { 1, 1e-006 } };\n" 5663 "TEMP R0;\n" 5664 "TEMP R1;\n" 5665 "TEMP R2;\n" 5666 "TEMP R3;\n" 5667 "MUL R0.xyz, fragment.position.y, c[2];\n" 5668 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5669 "ADD R0.xyz, R0, c[3];\n" 5670 "RCP R0.z, R0.z;\n" 5671 "MUL R0.xy, R0, R0.z;\n" 5672 "MUL R0.xy, R0, c[0];\n" 5673 "TEX R0, R0, texture[1], 2D;\n" 5674 "MAX R1.x, R0.w, c[5].y;\n" 5675 "RCP R1.x, R1.x;\n" 5676 "MAD R3.xyz, -R0, R1.x, c[5].x;\n" 5677 "MAX R3.xyz, R3, c[5].y;\n" 5678 "MUL R1.xy, fragment.position, c[4];\n" 5679 "TEX R1, R1, texture[0], 2D;\n" 5680 "ADD R2.x, -R0.w, c[5];\n" 5681 "MUL R2.xyz, R1, R2.x;\n" 5682 "ADD R2.w, -R1, c[5].x;\n" 5683 "MAD R2.xyz, R0, R2.w, R2;\n" 5684 "MUL R1.xyz, R0.w, R1;\n" 5685 "MAD R0.xyz, R0, R1.w, R1;\n" 5686 "MUL R2.w, R0, R1;\n" 5687 "RCP R3.x, R3.x;\n" 5688 "RCP R3.y, R3.y;\n" 5689 "RCP R3.z, R3.z;\n" 5690 "MAD R3.xyz, R1, R3, R2;\n" 5691 "MAD R2.xyz, R0.w, R1.w, R2;\n" 5692 "ADD R1.x, R0.w, R1.w;\n" 5693 "ADD R2.xyz, R2, -R3;\n" 5694 "SGE R0.xyz, R0, R2.w;\n" 5695 "MAD result.color.xyz, R0, R2, R3;\n" 5696 "MAD result.color.w, -R0, R1, R1.x;\n" 5697 "END\n" 5698 ; 5699 5700 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN_NOMASK = 5701 "!!ARBfp1.0\n" 5702 "PARAM c[6] = { program.local[0..4],\n" 5703 " { 1, 9.9999997e-006 } };\n" 5704 "TEMP R0;\n" 5705 "TEMP R1;\n" 5706 "TEMP R2;\n" 5707 "TEMP R3;\n" 5708 "TEMP R4;\n" 5709 "TEMP R5;\n" 5710 "MUL R0.xyz, fragment.position.y, c[2];\n" 5711 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5712 "ADD R0.xyz, R0, c[3];\n" 5713 "RCP R0.z, R0.z;\n" 5714 "MUL R0.xy, R0, R0.z;\n" 5715 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 5716 "TEX R1, R0.zwzw, texture[0], 2D;\n" 5717 "MUL R0.xy, R0, c[0];\n" 5718 "TEX R0, R0, texture[1], 2D;\n" 5719 "MUL R2.xyz, R0.w, R1;\n" 5720 "MAD R3.xyz, R0, R1.w, R2;\n" 5721 "ADD R2.w, -R1, c[5].x;\n" 5722 "MAD R2.xyz, -R0.w, R1.w, R3;\n" 5723 "MUL R4.xyz, R0.w, R2;\n" 5724 "MAX R2.xyz, R0, c[5].y;\n" 5725 "MUL R5.xyz, R0, R2.w;\n" 5726 "ADD R3.w, -R0, c[5].x;\n" 5727 "RCP R2.x, R2.x;\n" 5728 "RCP R2.y, R2.y;\n" 5729 "RCP R2.z, R2.z;\n" 5730 "MAD R2.xyz, R4, R2, R5;\n" 5731 "MUL R4.xyz, R1, R3.w;\n" 5732 "MAD R1.xyz, R1, R3.w, R2;\n" 5733 "MAD R0.xyz, R0, R2.w, R4;\n" 5734 "MUL R2.x, R0.w, R1.w;\n" 5735 "ADD R2.w, R0, R1;\n" 5736 "ADD R1.xyz, R1, -R0;\n" 5737 "SGE R2.xyz, R3, R2.x;\n" 5738 "MAD result.color.xyz, R2, R1, R0;\n" 5739 "MAD result.color.w, -R0, R1, R2;\n" 5740 "END\n" 5741 ; 5742 5743 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT_NOMASK = 5744 "!!ARBfp1.0\n" 5745 "PARAM c[6] = { program.local[0..4],\n" 5746 " { 2, 1 } };\n" 5747 "TEMP R0;\n" 5748 "TEMP R1;\n" 5749 "TEMP R2;\n" 5750 "TEMP R3;\n" 5751 "TEMP R4;\n" 5752 "MUL R0.xyz, fragment.position.y, c[2];\n" 5753 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5754 "ADD R0.xyz, R0, c[3];\n" 5755 "RCP R0.z, R0.z;\n" 5756 "MUL R0.xy, R0, R0.z;\n" 5757 "MUL R0.xy, R0, c[0];\n" 5758 "TEX R0, R0, texture[1], 2D;\n" 5759 "MUL R1.xy, fragment.position, c[4];\n" 5760 "TEX R1, R1, texture[0], 2D;\n" 5761 "ADD R2.w, -R1, c[5].y;\n" 5762 "ADD R3.xyz, R0.w, -R0;\n" 5763 "ADD R2.xyz, R1.w, -R1;\n" 5764 "MUL R2.xyz, R2, R3;\n" 5765 "MUL R2.xyz, R2, c[5].x;\n" 5766 "MAD R2.xyz, R0.w, R1.w, -R2;\n" 5767 "MAD R2.xyz, R0, R2.w, R2;\n" 5768 "MUL R4.xyz, R0, R2.w;\n" 5769 "MUL R3.xyz, R0, R1;\n" 5770 "MUL R0.xyz, R0, c[5].x;\n" 5771 "ADD R2.w, -R0, c[5].y;\n" 5772 "MAD R3.xyz, R3, c[5].x, R4;\n" 5773 "MAD R3.xyz, R1, R2.w, R3;\n" 5774 "MAD R1.xyz, R1, R2.w, R2;\n" 5775 "ADD R2.x, R0.w, R1.w;\n" 5776 "ADD R1.xyz, R1, -R3;\n" 5777 "SGE R0.xyz, R0, R0.w;\n" 5778 "MAD result.color.xyz, R0, R1, R3;\n" 5779 "MAD result.color.w, -R0, R1, R2.x;\n" 5780 "END\n" 5781 ; 5782 5783 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT_NOMASK = 5784 "!!ARBfp1.0\n" 5785 "PARAM c[7] = { program.local[0..4],\n" 5786 " { 1, 2, 9.9999997e-006, 4 },\n" 5787 " { 16, 12, 3 } };\n" 5788 "TEMP R0;\n" 5789 "TEMP R1;\n" 5790 "TEMP R2;\n" 5791 "TEMP R3;\n" 5792 "TEMP R4;\n" 5793 "TEMP R5;\n" 5794 "TEMP R6;\n" 5795 "MUL R0.xyz, fragment.position.y, c[2];\n" 5796 "MUL R1.xy, fragment.position, c[4];\n" 5797 "TEX R1, R1, texture[0], 2D;\n" 5798 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5799 "ADD R0.xyz, R0, c[3];\n" 5800 "RCP R0.z, R0.z;\n" 5801 "MUL R0.xy, R0, R0.z;\n" 5802 "MAX R0.w, R1, c[5].z;\n" 5803 "RCP R0.w, R0.w;\n" 5804 "MUL R3.xyz, R1, R0.w;\n" 5805 "MAD R2.xyz, R3, c[6].x, -c[6].y;\n" 5806 "MUL R0.xy, R0, c[0];\n" 5807 "TEX R0, R0, texture[1], 2D;\n" 5808 "MAD R4.xyz, R3, R2, c[6].z;\n" 5809 "MAD R2.xyz, R0, c[5].y, -R0.w;\n" 5810 "MUL R5.xyz, R1.w, R2;\n" 5811 "MUL R6.xyz, R5, R4;\n" 5812 "RSQ R2.w, R3.x;\n" 5813 "RCP R4.x, R2.w;\n" 5814 "RSQ R2.w, R3.y;\n" 5815 "RSQ R3.w, R3.z;\n" 5816 "RCP R4.y, R2.w;\n" 5817 "RCP R4.z, R3.w;\n" 5818 "ADD R4.xyz, -R3, R4;\n" 5819 "MUL R6.xyz, R3, R6;\n" 5820 "MUL R4.xyz, R5, R4;\n" 5821 "ADD R3.xyz, -R3, c[5].x;\n" 5822 "MAD R2.xyz, R2, R3, R0.w;\n" 5823 "MUL R3.xyz, R0, c[5].y;\n" 5824 "MAD R5.xyz, R0.w, R1, R6;\n" 5825 "MAD R4.xyz, R0.w, R1, R4;\n" 5826 "ADD R6.xyz, R4, -R5;\n" 5827 "MUL R4.xyz, R1, c[5].w;\n" 5828 "SGE R4.xyz, R4, R1.w;\n" 5829 "MAD R4.xyz, R4, R6, R5;\n" 5830 "MAD R4.xyz, -R1, R2, R4;\n" 5831 "MUL R2.xyz, R1, R2;\n" 5832 "SGE R3.xyz, R3, R0.w;\n" 5833 "MAD R2.xyz, R3, R4, R2;\n" 5834 "ADD R2.w, -R1, c[5].x;\n" 5835 "MAD R2.xyz, R0, R2.w, R2;\n" 5836 "ADD R0.x, R0.w, R1.w;\n" 5837 "ADD R0.y, -R0.w, c[5].x;\n" 5838 "MAD result.color.xyz, R1, R0.y, R2;\n" 5839 "MAD result.color.w, -R0, R1, R0.x;\n" 5840 "END\n" 5841 ; 5842 5843 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE_NOMASK = 5844 "!!ARBfp1.0\n" 5845 "PARAM c[6] = { program.local[0..4],\n" 5846 " { 2 } };\n" 5847 "TEMP R0;\n" 5848 "TEMP R1;\n" 5849 "TEMP R2;\n" 5850 "TEMP R3;\n" 5851 "MUL R0.xyz, fragment.position.y, c[2];\n" 5852 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5853 "ADD R0.xyz, R0, c[3];\n" 5854 "RCP R0.z, R0.z;\n" 5855 "MUL R0.xy, R0, R0.z;\n" 5856 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 5857 "TEX R1, R0.zwzw, texture[0], 2D;\n" 5858 "MUL R0.xy, R0, c[0];\n" 5859 "TEX R0, R0, texture[1], 2D;\n" 5860 "MUL R2.xyz, R0, R1.w;\n" 5861 "MUL R3.xyz, R0.w, R1;\n" 5862 "ADD R0.xyz, R0, R1;\n" 5863 "MIN R2.xyz, R2, R3;\n" 5864 "ADD R1.x, R0.w, R1.w;\n" 5865 "MAD result.color.xyz, -R2, c[5].x, R0;\n" 5866 "MAD result.color.w, -R0, R1, R1.x;\n" 5867 "END\n" 5868 ; 5869 5870 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION_NOMASK = 5871 "!!ARBfp1.0\n" 5872 "PARAM c[6] = { program.local[0..4],\n" 5873 " { 2, 1 } };\n" 5874 "TEMP R0;\n" 5875 "TEMP R1;\n" 5876 "TEMP R2;\n" 5877 "TEMP R3;\n" 5878 "MUL R0.xyz, fragment.position.y, c[2];\n" 5879 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5880 "ADD R0.xyz, R0, c[3];\n" 5881 "RCP R0.z, R0.z;\n" 5882 "MUL R0.xy, R0, R0.z;\n" 5883 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 5884 "TEX R1, R0.zwzw, texture[0], 2D;\n" 5885 "MUL R0.xy, R0, c[0];\n" 5886 "TEX R0, R0, texture[1], 2D;\n" 5887 "MUL R2.xyz, R0.w, R1;\n" 5888 "MAD R3.xyz, R0, R1.w, R2;\n" 5889 "MUL R2.xyz, R0, R1;\n" 5890 "MAD R2.xyz, -R2, c[5].x, R3;\n" 5891 "ADD R2.w, -R1, c[5].y;\n" 5892 "MAD R0.xyz, R0, R2.w, R2;\n" 5893 "ADD R2.x, R0.w, R1.w;\n" 5894 "ADD R2.y, -R0.w, c[5];\n" 5895 "MAD result.color.xyz, R1, R2.y, R0;\n" 5896 "MAD result.color.w, -R0, R1, R2.x;\n" 5897 "END\n" 5898 ; 5899 5900 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_MASK = 5901 "!!ARBfp1.0\n" 5902 "PARAM c[7] = { program.local[0..6] };\n" 5903 "TEMP R0;\n" 5904 "TEMP R1;\n" 5905 "MUL R0.xyz, fragment.position.y, c[2];\n" 5906 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5907 "ADD R1.xyz, R0, c[3];\n" 5908 "RCP R0.z, R1.z;\n" 5909 "MUL R1.xy, R1, R0.z;\n" 5910 "ADD R0.xy, fragment.position, c[5];\n" 5911 "MUL R0.xy, R0, c[4];\n" 5912 "TEX R0, R0, texture[0], 2D;\n" 5913 "DP4 R1.z, R0, c[6];\n" 5914 "MUL R1.xy, R1, c[0];\n" 5915 "TEX R0, R1, texture[1], 2D;\n" 5916 "MUL result.color, R0, R1.z;\n" 5917 "END\n" 5918 ; 5919 5920 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_NOMASK = 5921 "!!ARBfp1.0\n" 5922 "PARAM c[4] = { program.local[0..3] };\n" 5923 "TEMP R0;\n" 5924 "MUL R0.xyz, fragment.position.y, c[2];\n" 5925 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5926 "ADD R0.xyz, R0, c[3];\n" 5927 "RCP R0.z, R0.z;\n" 5928 "MUL R0.xy, R0, R0.z;\n" 5929 "MUL R0.xy, R0, c[0];\n" 5930 "TEX result.color, R0, texture[0], 2D;\n" 5931 "END\n" 5932 ; 5933 5934 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF = 5935 "!!ARBfp1.0\n" 5936 "PARAM c[11] = { program.local[0..9],\n" 5937 " { 1 } };\n" 5938 "TEMP R0;\n" 5939 "TEMP R1;\n" 5940 "TEMP R2;\n" 5941 "TEMP R3;\n" 5942 "MUL R0.xyz, fragment.position.y, c[2];\n" 5943 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5944 "ADD R0.xyz, R0, c[3];\n" 5945 "RCP R0.z, R0.z;\n" 5946 "MUL R0.xy, R0, R0.z;\n" 5947 "MUL R0.zw, R0.xyxy, c[0].xyxy;\n" 5948 "TEX R1.x, R0.zwzw, texture[2], 2D;\n" 5949 "MUL R0.xy, fragment.position, c[7];\n" 5950 "TEX R0, R0, texture[0], 2D;\n" 5951 "ADD R1.x, -R1, c[10];\n" 5952 "MUL R1, fragment.color.primary, R1.x;\n" 5953 "MUL R2.xyz, R0, c[4].y;\n" 5954 "MUL R3.xyz, R1.w, R2;\n" 5955 "MUL R2.xyz, R1, c[4].x;\n" 5956 "MAD R2.xyz, R0.w, R2, R3;\n" 5957 "ADD R3.xy, fragment.position, c[8];\n" 5958 "ADD R2.w, -R0, c[10].x;\n" 5959 "MUL R1.xyz, R1, c[5].y;\n" 5960 "MAD R2.xyz, R2.w, R1, R2;\n" 5961 "MUL R1.xyz, R0, c[5].z;\n" 5962 "ADD R3.z, -R1.w, c[10].x;\n" 5963 "MAD R2.xyz, R3.z, R1, R2;\n" 5964 "MUL R1.y, R1.w, R2.w;\n" 5965 "MUL R1.x, R1.w, R0.w;\n" 5966 "MUL R1.z, R0.w, R3;\n" 5967 "DP3 R2.w, R1, c[5];\n" 5968 "MUL R3.xy, R3, c[6];\n" 5969 "TEX R1, R3, texture[1], 2D;\n" 5970 "ADD R2, R2, -R0;\n" 5971 "DP4 R1.x, R1, c[9];\n" 5972 "MAD result.color, R1.x, R2, R0;\n" 5973 "END\n" 5974 ; 5975 5976 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY = 5977 "!!ARBfp1.0\n" 5978 "PARAM c[9] = { program.local[0..7],\n" 5979 " { 1 } };\n" 5980 "TEMP R0;\n" 5981 "TEMP R1;\n" 5982 "TEMP R2;\n" 5983 "MUL R0.xyz, fragment.position.y, c[2];\n" 5984 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 5985 "ADD R0.xyz, R0, c[3];\n" 5986 "RCP R0.z, R0.z;\n" 5987 "MUL R0.xy, R0, R0.z;\n" 5988 "MUL R0.zw, R0.xyxy, c[0].xyxy;\n" 5989 "TEX R1.x, R0.zwzw, texture[2], 2D;\n" 5990 "MUL R0.xy, fragment.position, c[5];\n" 5991 "TEX R0, R0, texture[0], 2D;\n" 5992 "ADD R1.x, -R1, c[8];\n" 5993 "MUL R1, fragment.color.primary, R1.x;\n" 5994 "ADD R2.x, -R0.w, c[8];\n" 5995 "MUL R2.xyz, R1, R2.x;\n" 5996 "MAD R1.xyz, R1, R0, R2;\n" 5997 "ADD R2.x, -R1.w, c[8];\n" 5998 "MAD R2.xyz, R0, R2.x, R1;\n" 5999 "ADD R1.z, R1.w, R0.w;\n" 6000 "MAD R2.w, -R1, R0, R1.z;\n" 6001 "ADD R1.xy, fragment.position, c[6];\n" 6002 "MUL R1.xy, R1, c[4];\n" 6003 "TEX R1, R1, texture[1], 2D;\n" 6004 "ADD R2, R2, -R0;\n" 6005 "DP4 R1.x, R1, c[7];\n" 6006 "MAD result.color, R1.x, R2, R0;\n" 6007 "END\n" 6008 ; 6009 6010 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN = 6011 "!!ARBfp1.0\n" 6012 "PARAM c[9] = { program.local[0..7],\n" 6013 " { 1 } };\n" 6014 "TEMP R0;\n" 6015 "TEMP R1;\n" 6016 "TEMP R2;\n" 6017 "TEMP R3;\n" 6018 "MUL R0.xyz, fragment.position.y, c[2];\n" 6019 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6020 "ADD R0.xyz, R0, c[3];\n" 6021 "RCP R0.z, R0.z;\n" 6022 "MUL R0.xy, R0, R0.z;\n" 6023 "MUL R0.xy, R0, c[0];\n" 6024 "TEX R0.x, R0, texture[2], 2D;\n" 6025 "ADD R0.z, -R0.x, c[8].x;\n" 6026 "ADD R3.xy, fragment.position, c[6];\n" 6027 "MUL R1, fragment.color.primary, R0.z;\n" 6028 "MUL R0.xy, fragment.position, c[5];\n" 6029 "TEX R0, R0, texture[0], 2D;\n" 6030 "ADD R2, R1, R0;\n" 6031 "MAD R2, -R1, R0, R2;\n" 6032 "MUL R3.xy, R3, c[4];\n" 6033 "TEX R1, R3, texture[1], 2D;\n" 6034 "ADD R2, R2, -R0;\n" 6035 "DP4 R1.x, R1, c[7];\n" 6036 "MAD result.color, R1.x, R2, R0;\n" 6037 "END\n" 6038 ; 6039 6040 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY = 6041 "!!ARBfp1.0\n" 6042 "PARAM c[9] = { program.local[0..7],\n" 6043 " { 1, 2 } };\n" 6044 "TEMP R0;\n" 6045 "TEMP R1;\n" 6046 "TEMP R2;\n" 6047 "TEMP R3;\n" 6048 "TEMP R4;\n" 6049 "MUL R0.xyz, fragment.position.y, c[2];\n" 6050 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6051 "ADD R0.xyz, R0, c[3];\n" 6052 "RCP R0.z, R0.z;\n" 6053 "MUL R0.xy, R0, R0.z;\n" 6054 "MUL R0.xy, R0, c[0];\n" 6055 "TEX R0.x, R0, texture[2], 2D;\n" 6056 "ADD R0.x, -R0, c[8];\n" 6057 "MUL R1, fragment.color.primary, R0.x;\n" 6058 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 6059 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6060 "ADD R2.w, -R0, c[8].x;\n" 6061 "ADD R3.xyz, R1.w, -R1;\n" 6062 "ADD R2.xyz, R0.w, -R0;\n" 6063 "MUL R2.xyz, R2, R3;\n" 6064 "MUL R2.xyz, R2, c[8].y;\n" 6065 "MAD R2.xyz, R1.w, R0.w, -R2;\n" 6066 "MUL R4.xyz, R1, R2.w;\n" 6067 "MUL R3.xyz, R1, R0;\n" 6068 "MAD R1.xyz, R1, R2.w, R2;\n" 6069 "ADD R2.x, -R1.w, c[8];\n" 6070 "MAD R3.xyz, R3, c[8].y, R4;\n" 6071 "MAD R3.xyz, R0, R2.x, R3;\n" 6072 "MAD R1.xyz, R0, R2.x, R1;\n" 6073 "MUL R2.xyz, R0, c[8].y;\n" 6074 "ADD R1.xyz, R1, -R3;\n" 6075 "SGE R2.xyz, R2, R0.w;\n" 6076 "MAD R2.xyz, R2, R1, R3;\n" 6077 "ADD R1.z, R1.w, R0.w;\n" 6078 "MAD R2.w, -R1, R0, R1.z;\n" 6079 "ADD R1.xy, fragment.position, c[6];\n" 6080 "MUL R1.xy, R1, c[4];\n" 6081 "TEX R1, R1, texture[1], 2D;\n" 6082 "ADD R2, R2, -R0;\n" 6083 "DP4 R1.x, R1, c[7];\n" 6084 "MAD result.color, R1.x, R2, R0;\n" 6085 "END\n" 6086 ; 6087 6088 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN = 6089 "!!ARBfp1.0\n" 6090 "PARAM c[9] = { program.local[0..7],\n" 6091 " { 1 } };\n" 6092 "TEMP R0;\n" 6093 "TEMP R1;\n" 6094 "TEMP R2;\n" 6095 "TEMP R3;\n" 6096 "MUL R0.xyz, fragment.position.y, c[2];\n" 6097 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6098 "ADD R0.xyz, R0, c[3];\n" 6099 "RCP R0.z, R0.z;\n" 6100 "MUL R0.xy, R0, R0.z;\n" 6101 "MUL R0.xy, R0, c[0];\n" 6102 "TEX R1.x, R0, texture[2], 2D;\n" 6103 "MUL R0.xy, fragment.position, c[5];\n" 6104 "TEX R0, R0, texture[0], 2D;\n" 6105 "ADD R1.x, -R1, c[8];\n" 6106 "MUL R1, fragment.color.primary, R1.x;\n" 6107 "MUL R3.xyz, R1.w, R0;\n" 6108 "MUL R2.xyz, R1, R0.w;\n" 6109 "MIN R2.xyz, R2, R3;\n" 6110 "ADD R2.w, -R0, c[8].x;\n" 6111 "MAD R1.xyz, R1, R2.w, R2;\n" 6112 "ADD R2.x, -R1.w, c[8];\n" 6113 "MAD R2.xyz, R0, R2.x, R1;\n" 6114 "ADD R1.z, R1.w, R0.w;\n" 6115 "MAD R2.w, -R1, R0, R1.z;\n" 6116 "ADD R1.xy, fragment.position, c[6];\n" 6117 "MUL R1.xy, R1, c[4];\n" 6118 "TEX R1, R1, texture[1], 2D;\n" 6119 "ADD R2, R2, -R0;\n" 6120 "DP4 R1.x, R1, c[7];\n" 6121 "MAD result.color, R1.x, R2, R0;\n" 6122 "END\n" 6123 ; 6124 6125 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN = 6126 "!!ARBfp1.0\n" 6127 "PARAM c[9] = { program.local[0..7],\n" 6128 " { 1 } };\n" 6129 "TEMP R0;\n" 6130 "TEMP R1;\n" 6131 "TEMP R2;\n" 6132 "TEMP R3;\n" 6133 "MUL R0.xyz, fragment.position.y, c[2];\n" 6134 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6135 "ADD R0.xyz, R0, c[3];\n" 6136 "RCP R0.z, R0.z;\n" 6137 "MUL R0.xy, R0, R0.z;\n" 6138 "MUL R0.xy, R0, c[0];\n" 6139 "TEX R1.x, R0, texture[2], 2D;\n" 6140 "MUL R0.xy, fragment.position, c[5];\n" 6141 "TEX R0, R0, texture[0], 2D;\n" 6142 "ADD R1.x, -R1, c[8];\n" 6143 "MUL R1, fragment.color.primary, R1.x;\n" 6144 "MUL R3.xyz, R1.w, R0;\n" 6145 "MUL R2.xyz, R1, R0.w;\n" 6146 "MAX R2.xyz, R2, R3;\n" 6147 "ADD R2.w, -R0, c[8].x;\n" 6148 "MAD R1.xyz, R1, R2.w, R2;\n" 6149 "ADD R2.x, -R1.w, c[8];\n" 6150 "MAD R2.xyz, R0, R2.x, R1;\n" 6151 "ADD R1.z, R1.w, R0.w;\n" 6152 "MAD R2.w, -R1, R0, R1.z;\n" 6153 "ADD R1.xy, fragment.position, c[6];\n" 6154 "MUL R1.xy, R1, c[4];\n" 6155 "TEX R1, R1, texture[1], 2D;\n" 6156 "ADD R2, R2, -R0;\n" 6157 "DP4 R1.x, R1, c[7];\n" 6158 "MAD result.color, R1.x, R2, R0;\n" 6159 "END\n" 6160 ; 6161 6162 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE = 6163 "!!ARBfp1.0\n" 6164 "PARAM c[9] = { program.local[0..7],\n" 6165 " { 1, 1e-006 } };\n" 6166 "TEMP R0;\n" 6167 "TEMP R1;\n" 6168 "TEMP R2;\n" 6169 "TEMP R3;\n" 6170 "TEMP R4;\n" 6171 "MUL R0.xyz, fragment.position.y, c[2];\n" 6172 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6173 "ADD R0.xyz, R0, c[3];\n" 6174 "RCP R0.z, R0.z;\n" 6175 "MUL R0.xy, R0, R0.z;\n" 6176 "MUL R0.xy, R0, c[0];\n" 6177 "TEX R0.x, R0, texture[2], 2D;\n" 6178 "ADD R0.x, -R0, c[8];\n" 6179 "MUL R1, fragment.color.primary, R0.x;\n" 6180 "MAX R0.x, R1.w, c[8].y;\n" 6181 "RCP R0.x, R0.x;\n" 6182 "MAD R2.xyz, -R1, R0.x, c[8].x;\n" 6183 "MAX R2.xyz, R2, c[8].y;\n" 6184 "MUL R0.xy, fragment.position, c[5];\n" 6185 "TEX R0, R0, texture[0], 2D;\n" 6186 "ADD R2.w, -R1, c[8].x;\n" 6187 "MUL R3.xyz, R0, R2.w;\n" 6188 "ADD R2.w, -R0, c[8].x;\n" 6189 "MAD R4.xyz, R1, R2.w, R3;\n" 6190 "MUL R3.xyz, R1.w, R0;\n" 6191 "MUL R2.w, R1, R0;\n" 6192 "MAD R1.xyz, R1, R0.w, R3;\n" 6193 "SGE R1.xyz, R1, R2.w;\n" 6194 "RCP R2.x, R2.x;\n" 6195 "RCP R2.y, R2.y;\n" 6196 "RCP R2.z, R2.z;\n" 6197 "MAD R2.xyz, R3, R2, R4;\n" 6198 "MAD R4.xyz, R1.w, R0.w, R4;\n" 6199 "ADD R4.xyz, R4, -R2;\n" 6200 "MAD R2.xyz, R1, R4, R2;\n" 6201 "ADD R1.z, R1.w, R0.w;\n" 6202 "MAD R2.w, -R1, R0, R1.z;\n" 6203 "ADD R1.xy, fragment.position, c[6];\n" 6204 "MUL R1.xy, R1, c[4];\n" 6205 "TEX R1, R1, texture[1], 2D;\n" 6206 "ADD R2, R2, -R0;\n" 6207 "DP4 R1.x, R1, c[7];\n" 6208 "MAD result.color, R1.x, R2, R0;\n" 6209 "END\n" 6210 ; 6211 6212 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN = 6213 "!!ARBfp1.0\n" 6214 "PARAM c[9] = { program.local[0..7],\n" 6215 " { 1, 9.9999997e-006 } };\n" 6216 "TEMP R0;\n" 6217 "TEMP R1;\n" 6218 "TEMP R2;\n" 6219 "TEMP R3;\n" 6220 "TEMP R4;\n" 6221 "TEMP R5;\n" 6222 "MUL R0.xyz, fragment.position.y, c[2];\n" 6223 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6224 "ADD R0.xyz, R0, c[3];\n" 6225 "RCP R0.z, R0.z;\n" 6226 "MUL R0.xy, R0, R0.z;\n" 6227 "MUL R0.xy, R0, c[0];\n" 6228 "TEX R0.x, R0, texture[2], 2D;\n" 6229 "ADD R1.x, -R0, c[8];\n" 6230 "MUL R1, fragment.color.primary, R1.x;\n" 6231 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 6232 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6233 "MUL R2.xyz, R1.w, R0;\n" 6234 "MAD R3.xyz, R1, R0.w, R2;\n" 6235 "MAD R2.xyz, -R1.w, R0.w, R3;\n" 6236 "MUL R4.xyz, R1.w, R2;\n" 6237 "MAX R2.xyz, R1, c[8].y;\n" 6238 "ADD R2.w, -R0, c[8].x;\n" 6239 "MUL R5.xyz, R1, R2.w;\n" 6240 "ADD R3.w, -R1, c[8].x;\n" 6241 "RCP R2.x, R2.x;\n" 6242 "RCP R2.y, R2.y;\n" 6243 "RCP R2.z, R2.z;\n" 6244 "MAD R2.xyz, R4, R2, R5;\n" 6245 "MUL R4.xyz, R0, R3.w;\n" 6246 "MAD R1.xyz, R1, R2.w, R4;\n" 6247 "MUL R2.w, R1, R0;\n" 6248 "MAD R2.xyz, R0, R3.w, R2;\n" 6249 "ADD R2.xyz, R2, -R1;\n" 6250 "SGE R3.xyz, R3, R2.w;\n" 6251 "MAD R2.xyz, R3, R2, R1;\n" 6252 "ADD R1.z, R1.w, R0.w;\n" 6253 "MAD R2.w, -R1, R0, R1.z;\n" 6254 "ADD R1.xy, fragment.position, c[6];\n" 6255 "MUL R1.xy, R1, c[4];\n" 6256 "TEX R1, R1, texture[1], 2D;\n" 6257 "ADD R2, R2, -R0;\n" 6258 "DP4 R1.x, R1, c[7];\n" 6259 "MAD result.color, R1.x, R2, R0;\n" 6260 "END\n" 6261 ; 6262 6263 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT = 6264 "!!ARBfp1.0\n" 6265 "PARAM c[9] = { program.local[0..7],\n" 6266 " { 1, 2 } };\n" 6267 "TEMP R0;\n" 6268 "TEMP R1;\n" 6269 "TEMP R2;\n" 6270 "TEMP R3;\n" 6271 "TEMP R4;\n" 6272 "MUL R0.xyz, fragment.position.y, c[2];\n" 6273 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6274 "ADD R0.xyz, R0, c[3];\n" 6275 "RCP R0.z, R0.z;\n" 6276 "MUL R0.xy, R0, R0.z;\n" 6277 "MUL R0.xy, R0, c[0];\n" 6278 "TEX R0.x, R0, texture[2], 2D;\n" 6279 "ADD R0.x, -R0, c[8];\n" 6280 "MUL R1, fragment.color.primary, R0.x;\n" 6281 "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n" 6282 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6283 "ADD R2.w, -R0, c[8].x;\n" 6284 "ADD R3.xyz, R1.w, -R1;\n" 6285 "ADD R2.xyz, R0.w, -R0;\n" 6286 "MUL R2.xyz, R2, R3;\n" 6287 "MUL R2.xyz, R2, c[8].y;\n" 6288 "MAD R2.xyz, R1.w, R0.w, -R2;\n" 6289 "MUL R4.xyz, R1, R2.w;\n" 6290 "MAD R2.xyz, R1, R2.w, R2;\n" 6291 "MUL R3.xyz, R1, R0;\n" 6292 "ADD R2.w, -R1, c[8].x;\n" 6293 "MAD R3.xyz, R3, c[8].y, R4;\n" 6294 "MUL R1.xyz, R1, c[8].y;\n" 6295 "SGE R1.xyz, R1, R1.w;\n" 6296 "MAD R3.xyz, R0, R2.w, R3;\n" 6297 "MAD R2.xyz, R0, R2.w, R2;\n" 6298 "ADD R2.xyz, R2, -R3;\n" 6299 "MAD R2.xyz, R1, R2, R3;\n" 6300 "ADD R1.z, R1.w, R0.w;\n" 6301 "MAD R2.w, -R1, R0, R1.z;\n" 6302 "ADD R1.xy, fragment.position, c[6];\n" 6303 "MUL R1.xy, R1, c[4];\n" 6304 "TEX R1, R1, texture[1], 2D;\n" 6305 "ADD R2, R2, -R0;\n" 6306 "DP4 R1.x, R1, c[7];\n" 6307 "MAD result.color, R1.x, R2, R0;\n" 6308 "END\n" 6309 ; 6310 6311 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT = 6312 "!!ARBfp1.0\n" 6313 "PARAM c[10] = { program.local[0..7],\n" 6314 " { 1, 2, 9.9999997e-006, 4 },\n" 6315 " { 16, 12, 3 } };\n" 6316 "TEMP R0;\n" 6317 "TEMP R1;\n" 6318 "TEMP R2;\n" 6319 "TEMP R3;\n" 6320 "TEMP R4;\n" 6321 "TEMP R5;\n" 6322 "TEMP R6;\n" 6323 "MUL R0.xyz, fragment.position.y, c[2];\n" 6324 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6325 "ADD R1.xyz, R0, c[3];\n" 6326 "RCP R1.z, R1.z;\n" 6327 "MUL R1.xy, R1, R1.z;\n" 6328 "MUL R1.xy, R1, c[0];\n" 6329 "TEX R1.x, R1, texture[2], 2D;\n" 6330 "MUL R0.xy, fragment.position, c[5];\n" 6331 "TEX R0, R0, texture[0], 2D;\n" 6332 "MAX R1.z, R0.w, c[8];\n" 6333 "RCP R1.z, R1.z;\n" 6334 "MUL R3.xyz, R0, R1.z;\n" 6335 "MAD R2.xyz, R3, c[9].x, -c[9].y;\n" 6336 "ADD R1.x, -R1, c[8];\n" 6337 "MUL R1, fragment.color.primary, R1.x;\n" 6338 "MAD R4.xyz, R3, R2, c[9].z;\n" 6339 "MAD R2.xyz, R1, c[8].y, -R1.w;\n" 6340 "MUL R5.xyz, R0.w, R2;\n" 6341 "MUL R6.xyz, R5, R4;\n" 6342 "RSQ R2.w, R3.x;\n" 6343 "RCP R4.x, R2.w;\n" 6344 "RSQ R2.w, R3.y;\n" 6345 "RSQ R3.w, R3.z;\n" 6346 "RCP R4.y, R2.w;\n" 6347 "RCP R4.z, R3.w;\n" 6348 "ADD R4.xyz, -R3, R4;\n" 6349 "MUL R6.xyz, R3, R6;\n" 6350 "MUL R4.xyz, R5, R4;\n" 6351 "ADD R3.xyz, -R3, c[8].x;\n" 6352 "MAD R2.xyz, R2, R3, R1.w;\n" 6353 "MUL R3.xyz, R1, c[8].y;\n" 6354 "MAD R5.xyz, R1.w, R0, R6;\n" 6355 "MAD R4.xyz, R1.w, R0, R4;\n" 6356 "ADD R6.xyz, R4, -R5;\n" 6357 "MUL R4.xyz, R0, c[8].w;\n" 6358 "SGE R4.xyz, R4, R0.w;\n" 6359 "MAD R4.xyz, R4, R6, R5;\n" 6360 "MAD R4.xyz, -R0, R2, R4;\n" 6361 "SGE R3.xyz, R3, R1.w;\n" 6362 "MUL R2.xyz, R0, R2;\n" 6363 "ADD R2.w, -R0, c[8].x;\n" 6364 "MAD R2.xyz, R3, R4, R2;\n" 6365 "MAD R2.xyz, R1, R2.w, R2;\n" 6366 "ADD R1.x, -R1.w, c[8];\n" 6367 "MAD R2.xyz, R0, R1.x, R2;\n" 6368 "ADD R1.z, R1.w, R0.w;\n" 6369 "MAD R2.w, -R1, R0, R1.z;\n" 6370 "ADD R1.xy, fragment.position, c[6];\n" 6371 "MUL R1.xy, R1, c[4];\n" 6372 "TEX R1, R1, texture[1], 2D;\n" 6373 "ADD R2, R2, -R0;\n" 6374 "DP4 R1.x, R1, c[7];\n" 6375 "MAD result.color, R1.x, R2, R0;\n" 6376 "END\n" 6377 ; 6378 6379 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE = 6380 "!!ARBfp1.0\n" 6381 "PARAM c[9] = { program.local[0..7],\n" 6382 " { 1, 2 } };\n" 6383 "TEMP R0;\n" 6384 "TEMP R1;\n" 6385 "TEMP R2;\n" 6386 "TEMP R3;\n" 6387 "MUL R0.xyz, fragment.position.y, c[2];\n" 6388 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6389 "ADD R0.xyz, R0, c[3];\n" 6390 "RCP R0.z, R0.z;\n" 6391 "MUL R0.xy, R0, R0.z;\n" 6392 "MUL R0.xy, R0, c[0];\n" 6393 "TEX R1.x, R0, texture[2], 2D;\n" 6394 "MUL R0.xy, fragment.position, c[5];\n" 6395 "ADD R1.x, -R1, c[8];\n" 6396 "TEX R0, R0, texture[0], 2D;\n" 6397 "MUL R1, fragment.color.primary, R1.x;\n" 6398 "ADD R2.xyz, R1, R0;\n" 6399 "MUL R3.xyz, R1.w, R0;\n" 6400 "MUL R1.xyz, R1, R0.w;\n" 6401 "MIN R1.xyz, R1, R3;\n" 6402 "MAD R2.xyz, -R1, c[8].y, R2;\n" 6403 "ADD R1.z, R1.w, R0.w;\n" 6404 "MAD R2.w, -R1, R0, R1.z;\n" 6405 "ADD R1.xy, fragment.position, c[6];\n" 6406 "MUL R1.xy, R1, c[4];\n" 6407 "TEX R1, R1, texture[1], 2D;\n" 6408 "ADD R2, R2, -R0;\n" 6409 "DP4 R1.x, R1, c[7];\n" 6410 "MAD result.color, R1.x, R2, R0;\n" 6411 "END\n" 6412 ; 6413 6414 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION = 6415 "!!ARBfp1.0\n" 6416 "PARAM c[9] = { program.local[0..7],\n" 6417 " { 1, 2 } };\n" 6418 "TEMP R0;\n" 6419 "TEMP R1;\n" 6420 "TEMP R2;\n" 6421 "TEMP R3;\n" 6422 "MUL R0.xyz, fragment.position.y, c[2];\n" 6423 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6424 "ADD R0.xyz, R0, c[3];\n" 6425 "RCP R0.z, R0.z;\n" 6426 "MUL R0.xy, R0, R0.z;\n" 6427 "MUL R0.xy, R0, c[0];\n" 6428 "TEX R1.x, R0, texture[2], 2D;\n" 6429 "MUL R0.xy, fragment.position, c[5];\n" 6430 "TEX R0, R0, texture[0], 2D;\n" 6431 "ADD R1.x, -R1, c[8];\n" 6432 "MUL R1, fragment.color.primary, R1.x;\n" 6433 "MUL R2.xyz, R1.w, R0;\n" 6434 "MAD R3.xyz, R1, R0.w, R2;\n" 6435 "MUL R2.xyz, R1, R0;\n" 6436 "MAD R2.xyz, -R2, c[8].y, R3;\n" 6437 "ADD R2.w, -R0, c[8].x;\n" 6438 "MAD R1.xyz, R1, R2.w, R2;\n" 6439 "ADD R2.x, -R1.w, c[8];\n" 6440 "MAD R2.xyz, R0, R2.x, R1;\n" 6441 "ADD R1.z, R1.w, R0.w;\n" 6442 "MAD R2.w, -R1, R0, R1.z;\n" 6443 "ADD R1.xy, fragment.position, c[6];\n" 6444 "MUL R1.xy, R1, c[4];\n" 6445 "TEX R1, R1, texture[1], 2D;\n" 6446 "ADD R2, R2, -R0;\n" 6447 "DP4 R1.x, R1, c[7];\n" 6448 "MAD result.color, R1.x, R2, R0;\n" 6449 "END\n" 6450 ; 6451 6452 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK = 6453 "!!ARBfp1.0\n" 6454 "PARAM c[8] = { program.local[0..6],\n" 6455 " { 1 } };\n" 6456 "TEMP R0;\n" 6457 "TEMP R1;\n" 6458 "TEMP R2;\n" 6459 "TEMP R3;\n" 6460 "MUL R0.xyz, fragment.position.y, c[2];\n" 6461 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6462 "ADD R0.xyz, R0, c[3];\n" 6463 "RCP R0.z, R0.z;\n" 6464 "MUL R0.xy, R0, R0.z;\n" 6465 "MUL R0.xy, R0, c[0];\n" 6466 "TEX R1.x, R0, texture[1], 2D;\n" 6467 "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n" 6468 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6469 "MUL R2.xyz, R0, c[4].y;\n" 6470 "ADD R1.x, -R1, c[7];\n" 6471 "MUL R1, fragment.color.primary, R1.x;\n" 6472 "MUL R3.xyz, R1.w, R2;\n" 6473 "MUL R2.xyz, R1, c[4].x;\n" 6474 "MUL R0.xyz, R0, c[5].z;\n" 6475 "MAD R2.xyz, R0.w, R2, R3;\n" 6476 "ADD R2.w, -R0, c[7].x;\n" 6477 "MUL R1.xyz, R1, c[5].y;\n" 6478 "MAD R1.xyz, R2.w, R1, R2;\n" 6479 "ADD R2.x, -R1.w, c[7];\n" 6480 "MAD result.color.xyz, R2.x, R0, R1;\n" 6481 "MUL R0.x, R1.w, R0.w;\n" 6482 "MUL R0.z, R0.w, R2.x;\n" 6483 "MUL R0.y, R1.w, R2.w;\n" 6484 "DP3 result.color.w, R0, c[5];\n" 6485 "END\n" 6486 ; 6487 6488 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY_NOMASK = 6489 "!!ARBfp1.0\n" 6490 "PARAM c[6] = { program.local[0..4],\n" 6491 " { 1 } };\n" 6492 "TEMP R0;\n" 6493 "TEMP R1;\n" 6494 "TEMP R2;\n" 6495 "MUL R0.xyz, fragment.position.y, c[2];\n" 6496 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6497 "ADD R0.xyz, R0, c[3];\n" 6498 "RCP R0.z, R0.z;\n" 6499 "MUL R0.xy, R0, R0.z;\n" 6500 "MUL R0.xy, R0, c[0];\n" 6501 "TEX R1.x, R0, texture[1], 2D;\n" 6502 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 6503 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6504 "ADD R1.x, -R1, c[5];\n" 6505 "MUL R1, fragment.color.primary, R1.x;\n" 6506 "ADD R2.x, -R0.w, c[5];\n" 6507 "MUL R2.xyz, R1, R2.x;\n" 6508 "MAD R1.xyz, R1, R0, R2;\n" 6509 "ADD R2.x, R1.w, R0.w;\n" 6510 "ADD R2.y, -R1.w, c[5].x;\n" 6511 "MAD result.color.xyz, R0, R2.y, R1;\n" 6512 "MAD result.color.w, -R1, R0, R2.x;\n" 6513 "END\n" 6514 ; 6515 6516 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN_NOMASK = 6517 "!!ARBfp1.0\n" 6518 "PARAM c[6] = { program.local[0..4],\n" 6519 " { 1 } };\n" 6520 "TEMP R0;\n" 6521 "TEMP R1;\n" 6522 "TEMP R2;\n" 6523 "MUL R0.xyz, fragment.position.y, c[2];\n" 6524 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6525 "ADD R0.xyz, R0, c[3];\n" 6526 "RCP R0.z, R0.z;\n" 6527 "MUL R0.xy, R0, R0.z;\n" 6528 "MUL R0.xy, R0, c[0];\n" 6529 "TEX R0.x, R0, texture[1], 2D;\n" 6530 "ADD R1.x, -R0, c[5];\n" 6531 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 6532 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6533 "MUL R1, fragment.color.primary, R1.x;\n" 6534 "ADD R2, R1, R0;\n" 6535 "MAD result.color, -R1, R0, R2;\n" 6536 "END\n" 6537 ; 6538 6539 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY_NOMASK = 6540 "!!ARBfp1.0\n" 6541 "PARAM c[6] = { program.local[0..4],\n" 6542 " { 1, 2 } };\n" 6543 "TEMP R0;\n" 6544 "TEMP R1;\n" 6545 "TEMP R2;\n" 6546 "TEMP R3;\n" 6547 "MUL R0.xyz, fragment.position.y, c[2];\n" 6548 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6549 "ADD R0.xyz, R0, c[3];\n" 6550 "RCP R0.z, R0.z;\n" 6551 "MUL R0.xy, R0, R0.z;\n" 6552 "MUL R0.xy, R0, c[0];\n" 6553 "TEX R0.x, R0, texture[1], 2D;\n" 6554 "ADD R0.x, -R0, c[5];\n" 6555 "MUL R1, fragment.color.primary, R0.x;\n" 6556 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 6557 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6558 "ADD R3.xyz, R1.w, -R1;\n" 6559 "ADD R2.xyz, R0.w, -R0;\n" 6560 "MUL R2.xyz, R2, R3;\n" 6561 "ADD R2.w, -R0, c[5].x;\n" 6562 "MUL R2.xyz, R2, c[5].y;\n" 6563 "MAD R2.xyz, R1.w, R0.w, -R2;\n" 6564 "MAD R2.xyz, R1, R2.w, R2;\n" 6565 "MUL R3.xyz, R1, R2.w;\n" 6566 "MUL R1.xyz, R1, R0;\n" 6567 "ADD R2.w, -R1, c[5].x;\n" 6568 "MAD R1.xyz, R1, c[5].y, R3;\n" 6569 "MAD R1.xyz, R0, R2.w, R1;\n" 6570 "MAD R2.xyz, R0, R2.w, R2;\n" 6571 "MUL R0.xyz, R0, c[5].y;\n" 6572 "ADD R2.w, R1, R0;\n" 6573 "ADD R2.xyz, R2, -R1;\n" 6574 "SGE R0.xyz, R0, R0.w;\n" 6575 "MAD result.color.xyz, R0, R2, R1;\n" 6576 "MAD result.color.w, -R1, R0, R2;\n" 6577 "END\n" 6578 ; 6579 6580 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN_NOMASK = 6581 "!!ARBfp1.0\n" 6582 "PARAM c[6] = { program.local[0..4],\n" 6583 " { 1 } };\n" 6584 "TEMP R0;\n" 6585 "TEMP R1;\n" 6586 "TEMP R2;\n" 6587 "TEMP R3;\n" 6588 "MUL R0.xyz, fragment.position.y, c[2];\n" 6589 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6590 "ADD R0.xyz, R0, c[3];\n" 6591 "RCP R0.z, R0.z;\n" 6592 "MUL R0.xy, R0, R0.z;\n" 6593 "MUL R0.xy, R0, c[0];\n" 6594 "TEX R0.x, R0, texture[1], 2D;\n" 6595 "ADD R1.x, -R0, c[5];\n" 6596 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 6597 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6598 "MUL R1, fragment.color.primary, R1.x;\n" 6599 "MUL R2.xyz, R1, R0.w;\n" 6600 "MUL R3.xyz, R1.w, R0;\n" 6601 "MIN R2.xyz, R2, R3;\n" 6602 "ADD R2.w, -R0, c[5].x;\n" 6603 "MAD R1.xyz, R1, R2.w, R2;\n" 6604 "ADD R2.x, R1.w, R0.w;\n" 6605 "ADD R2.y, -R1.w, c[5].x;\n" 6606 "MAD result.color.xyz, R0, R2.y, R1;\n" 6607 "MAD result.color.w, -R1, R0, R2.x;\n" 6608 "END\n" 6609 ; 6610 6611 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN_NOMASK = 6612 "!!ARBfp1.0\n" 6613 "PARAM c[6] = { program.local[0..4],\n" 6614 " { 1 } };\n" 6615 "TEMP R0;\n" 6616 "TEMP R1;\n" 6617 "TEMP R2;\n" 6618 "TEMP R3;\n" 6619 "MUL R0.xyz, fragment.position.y, c[2];\n" 6620 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6621 "ADD R0.xyz, R0, c[3];\n" 6622 "RCP R0.z, R0.z;\n" 6623 "MUL R0.xy, R0, R0.z;\n" 6624 "MUL R0.xy, R0, c[0];\n" 6625 "TEX R0.x, R0, texture[1], 2D;\n" 6626 "ADD R1.x, -R0, c[5];\n" 6627 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 6628 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6629 "MUL R1, fragment.color.primary, R1.x;\n" 6630 "MUL R2.xyz, R1, R0.w;\n" 6631 "MUL R3.xyz, R1.w, R0;\n" 6632 "MAX R2.xyz, R2, R3;\n" 6633 "ADD R2.w, -R0, c[5].x;\n" 6634 "MAD R1.xyz, R1, R2.w, R2;\n" 6635 "ADD R2.x, R1.w, R0.w;\n" 6636 "ADD R2.y, -R1.w, c[5].x;\n" 6637 "MAD result.color.xyz, R0, R2.y, R1;\n" 6638 "MAD result.color.w, -R1, R0, R2.x;\n" 6639 "END\n" 6640 ; 6641 6642 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE_NOMASK = 6643 "!!ARBfp1.0\n" 6644 "PARAM c[6] = { program.local[0..4],\n" 6645 " { 1, 1e-006 } };\n" 6646 "TEMP R0;\n" 6647 "TEMP R1;\n" 6648 "TEMP R2;\n" 6649 "TEMP R3;\n" 6650 "MUL R0.xyz, fragment.position.y, c[2];\n" 6651 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6652 "ADD R0.xyz, R0, c[3];\n" 6653 "RCP R0.z, R0.z;\n" 6654 "MUL R0.xy, R0, R0.z;\n" 6655 "MUL R0.xy, R0, c[0];\n" 6656 "TEX R0.x, R0, texture[1], 2D;\n" 6657 "ADD R0.x, -R0, c[5];\n" 6658 "MUL R1, fragment.color.primary, R0.x;\n" 6659 "MAX R0.x, R1.w, c[5].y;\n" 6660 "RCP R0.x, R0.x;\n" 6661 "MAD R3.xyz, -R1, R0.x, c[5].x;\n" 6662 "MAX R3.xyz, R3, c[5].y;\n" 6663 "MUL R0.xy, fragment.position, c[4];\n" 6664 "TEX R0, R0, texture[0], 2D;\n" 6665 "ADD R2.x, -R1.w, c[5];\n" 6666 "MUL R2.xyz, R0, R2.x;\n" 6667 "ADD R2.w, -R0, c[5].x;\n" 6668 "MAD R2.xyz, R1, R2.w, R2;\n" 6669 "MUL R0.xyz, R1.w, R0;\n" 6670 "RCP R3.x, R3.x;\n" 6671 "RCP R3.y, R3.y;\n" 6672 "RCP R3.z, R3.z;\n" 6673 "MAD R3.xyz, R0, R3, R2;\n" 6674 "MAD R0.xyz, R1, R0.w, R0;\n" 6675 "MAD R2.xyz, R1.w, R0.w, R2;\n" 6676 "MUL R2.w, R1, R0;\n" 6677 "ADD R1.x, R1.w, R0.w;\n" 6678 "ADD R2.xyz, R2, -R3;\n" 6679 "SGE R0.xyz, R0, R2.w;\n" 6680 "MAD result.color.xyz, R0, R2, R3;\n" 6681 "MAD result.color.w, -R1, R0, R1.x;\n" 6682 "END\n" 6683 ; 6684 6685 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN_NOMASK = 6686 "!!ARBfp1.0\n" 6687 "PARAM c[6] = { program.local[0..4],\n" 6688 " { 1, 9.9999997e-006 } };\n" 6689 "TEMP R0;\n" 6690 "TEMP R1;\n" 6691 "TEMP R2;\n" 6692 "TEMP R3;\n" 6693 "TEMP R4;\n" 6694 "TEMP R5;\n" 6695 "MUL R0.xyz, fragment.position.y, c[2];\n" 6696 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6697 "ADD R0.xyz, R0, c[3];\n" 6698 "RCP R0.z, R0.z;\n" 6699 "MUL R0.xy, R0, R0.z;\n" 6700 "MUL R0.xy, R0, c[0];\n" 6701 "TEX R0.x, R0, texture[1], 2D;\n" 6702 "ADD R1.x, -R0, c[5];\n" 6703 "MUL R1, fragment.color.primary, R1.x;\n" 6704 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 6705 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6706 "MUL R2.xyz, R1.w, R0;\n" 6707 "MAD R3.xyz, R1, R0.w, R2;\n" 6708 "ADD R2.w, -R0, c[5].x;\n" 6709 "MAD R2.xyz, -R1.w, R0.w, R3;\n" 6710 "MUL R4.xyz, R1.w, R2;\n" 6711 "MAX R2.xyz, R1, c[5].y;\n" 6712 "MUL R5.xyz, R1, R2.w;\n" 6713 "ADD R3.w, -R1, c[5].x;\n" 6714 "RCP R2.x, R2.x;\n" 6715 "RCP R2.y, R2.y;\n" 6716 "RCP R2.z, R2.z;\n" 6717 "MAD R2.xyz, R4, R2, R5;\n" 6718 "MUL R4.xyz, R0, R3.w;\n" 6719 "MAD R0.xyz, R0, R3.w, R2;\n" 6720 "MAD R1.xyz, R1, R2.w, R4;\n" 6721 "MUL R2.x, R1.w, R0.w;\n" 6722 "ADD R2.w, R1, R0;\n" 6723 "ADD R0.xyz, R0, -R1;\n" 6724 "SGE R2.xyz, R3, R2.x;\n" 6725 "MAD result.color.xyz, R2, R0, R1;\n" 6726 "MAD result.color.w, -R1, R0, R2;\n" 6727 "END\n" 6728 ; 6729 6730 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT_NOMASK = 6731 "!!ARBfp1.0\n" 6732 "PARAM c[6] = { program.local[0..4],\n" 6733 " { 1, 2 } };\n" 6734 "TEMP R0;\n" 6735 "TEMP R1;\n" 6736 "TEMP R2;\n" 6737 "TEMP R3;\n" 6738 "TEMP R4;\n" 6739 "MUL R0.xyz, fragment.position.y, c[2];\n" 6740 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6741 "ADD R0.xyz, R0, c[3];\n" 6742 "RCP R0.z, R0.z;\n" 6743 "MUL R0.xy, R0, R0.z;\n" 6744 "MUL R0.xy, R0, c[0];\n" 6745 "TEX R0.x, R0, texture[1], 2D;\n" 6746 "ADD R0.x, -R0, c[5];\n" 6747 "MUL R1, fragment.color.primary, R0.x;\n" 6748 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 6749 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6750 "ADD R2.w, -R0, c[5].x;\n" 6751 "ADD R3.xyz, R1.w, -R1;\n" 6752 "ADD R2.xyz, R0.w, -R0;\n" 6753 "MUL R2.xyz, R2, R3;\n" 6754 "MUL R2.xyz, R2, c[5].y;\n" 6755 "MAD R2.xyz, R1.w, R0.w, -R2;\n" 6756 "MAD R2.xyz, R1, R2.w, R2;\n" 6757 "MUL R4.xyz, R1, R2.w;\n" 6758 "MUL R3.xyz, R1, R0;\n" 6759 "MUL R1.xyz, R1, c[5].y;\n" 6760 "ADD R2.w, -R1, c[5].x;\n" 6761 "MAD R3.xyz, R3, c[5].y, R4;\n" 6762 "MAD R3.xyz, R0, R2.w, R3;\n" 6763 "MAD R0.xyz, R0, R2.w, R2;\n" 6764 "ADD R2.x, R1.w, R0.w;\n" 6765 "ADD R0.xyz, R0, -R3;\n" 6766 "SGE R1.xyz, R1, R1.w;\n" 6767 "MAD result.color.xyz, R1, R0, R3;\n" 6768 "MAD result.color.w, -R1, R0, R2.x;\n" 6769 "END\n" 6770 ; 6771 6772 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT_NOMASK = 6773 "!!ARBfp1.0\n" 6774 "PARAM c[7] = { program.local[0..4],\n" 6775 " { 1, 2, 9.9999997e-006, 4 },\n" 6776 " { 16, 12, 3 } };\n" 6777 "TEMP R0;\n" 6778 "TEMP R1;\n" 6779 "TEMP R2;\n" 6780 "TEMP R3;\n" 6781 "TEMP R4;\n" 6782 "TEMP R5;\n" 6783 "TEMP R6;\n" 6784 "MUL R0.xyz, fragment.position.y, c[2];\n" 6785 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6786 "ADD R1.xyz, R0, c[3];\n" 6787 "RCP R1.z, R1.z;\n" 6788 "MUL R1.xy, R1, R1.z;\n" 6789 "MUL R1.xy, R1, c[0];\n" 6790 "TEX R1.x, R1, texture[1], 2D;\n" 6791 "MUL R0.xy, fragment.position, c[4];\n" 6792 "TEX R0, R0, texture[0], 2D;\n" 6793 "MAX R1.z, R0.w, c[5];\n" 6794 "RCP R1.z, R1.z;\n" 6795 "MUL R3.xyz, R0, R1.z;\n" 6796 "MAD R2.xyz, R3, c[6].x, -c[6].y;\n" 6797 "ADD R1.x, -R1, c[5];\n" 6798 "MUL R1, fragment.color.primary, R1.x;\n" 6799 "MAD R4.xyz, R3, R2, c[6].z;\n" 6800 "MAD R2.xyz, R1, c[5].y, -R1.w;\n" 6801 "MUL R5.xyz, R0.w, R2;\n" 6802 "MUL R6.xyz, R5, R4;\n" 6803 "RSQ R2.w, R3.x;\n" 6804 "RCP R4.x, R2.w;\n" 6805 "RSQ R2.w, R3.y;\n" 6806 "RSQ R3.w, R3.z;\n" 6807 "RCP R4.y, R2.w;\n" 6808 "RCP R4.z, R3.w;\n" 6809 "ADD R4.xyz, -R3, R4;\n" 6810 "MUL R6.xyz, R3, R6;\n" 6811 "MUL R4.xyz, R5, R4;\n" 6812 "ADD R3.xyz, -R3, c[5].x;\n" 6813 "MAD R2.xyz, R2, R3, R1.w;\n" 6814 "MUL R3.xyz, R1, c[5].y;\n" 6815 "MAD R5.xyz, R1.w, R0, R6;\n" 6816 "MAD R4.xyz, R1.w, R0, R4;\n" 6817 "ADD R6.xyz, R4, -R5;\n" 6818 "MUL R4.xyz, R0, c[5].w;\n" 6819 "SGE R4.xyz, R4, R0.w;\n" 6820 "MAD R4.xyz, R4, R6, R5;\n" 6821 "MAD R4.xyz, -R0, R2, R4;\n" 6822 "MUL R2.xyz, R0, R2;\n" 6823 "SGE R3.xyz, R3, R1.w;\n" 6824 "MAD R2.xyz, R3, R4, R2;\n" 6825 "ADD R2.w, -R0, c[5].x;\n" 6826 "MAD R2.xyz, R1, R2.w, R2;\n" 6827 "ADD R1.x, R1.w, R0.w;\n" 6828 "ADD R1.y, -R1.w, c[5].x;\n" 6829 "MAD result.color.xyz, R0, R1.y, R2;\n" 6830 "MAD result.color.w, -R1, R0, R1.x;\n" 6831 "END\n" 6832 ; 6833 6834 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE_NOMASK = 6835 "!!ARBfp1.0\n" 6836 "PARAM c[6] = { program.local[0..4],\n" 6837 " { 1, 2 } };\n" 6838 "TEMP R0;\n" 6839 "TEMP R1;\n" 6840 "TEMP R2;\n" 6841 "TEMP R3;\n" 6842 "MUL R0.xyz, fragment.position.y, c[2];\n" 6843 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6844 "ADD R0.xyz, R0, c[3];\n" 6845 "RCP R0.z, R0.z;\n" 6846 "MUL R0.xy, R0, R0.z;\n" 6847 "MUL R0.xy, R0, c[0];\n" 6848 "TEX R0.x, R0, texture[1], 2D;\n" 6849 "ADD R1.x, -R0, c[5];\n" 6850 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 6851 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6852 "MUL R1, fragment.color.primary, R1.x;\n" 6853 "MUL R3.xyz, R1.w, R0;\n" 6854 "MUL R2.xyz, R1, R0.w;\n" 6855 "ADD R0.xyz, R1, R0;\n" 6856 "MIN R2.xyz, R2, R3;\n" 6857 "ADD R1.x, R1.w, R0.w;\n" 6858 "MAD result.color.xyz, -R2, c[5].y, R0;\n" 6859 "MAD result.color.w, -R1, R0, R1.x;\n" 6860 "END\n" 6861 ; 6862 6863 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION_NOMASK = 6864 "!!ARBfp1.0\n" 6865 "PARAM c[6] = { program.local[0..4],\n" 6866 " { 1, 2 } };\n" 6867 "TEMP R0;\n" 6868 "TEMP R1;\n" 6869 "TEMP R2;\n" 6870 "TEMP R3;\n" 6871 "MUL R0.xyz, fragment.position.y, c[2];\n" 6872 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6873 "ADD R0.xyz, R0, c[3];\n" 6874 "RCP R0.z, R0.z;\n" 6875 "MUL R0.xy, R0, R0.z;\n" 6876 "MUL R0.xy, R0, c[0];\n" 6877 "TEX R0.x, R0, texture[1], 2D;\n" 6878 "ADD R1.x, -R0, c[5];\n" 6879 "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n" 6880 "TEX R0, R0.zwzw, texture[0], 2D;\n" 6881 "MUL R1, fragment.color.primary, R1.x;\n" 6882 "MUL R2.xyz, R1.w, R0;\n" 6883 "MAD R3.xyz, R1, R0.w, R2;\n" 6884 "MUL R2.xyz, R1, R0;\n" 6885 "MAD R2.xyz, -R2, c[5].y, R3;\n" 6886 "ADD R2.w, -R0, c[5].x;\n" 6887 "MAD R1.xyz, R1, R2.w, R2;\n" 6888 "ADD R2.x, R1.w, R0.w;\n" 6889 "ADD R2.y, -R1.w, c[5].x;\n" 6890 "MAD result.color.xyz, R0, R2.y, R1;\n" 6891 "MAD result.color.w, -R1, R0, R2.x;\n" 6892 "END\n" 6893 ; 6894 6895 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_MASK = 6896 "!!ARBfp1.0\n" 6897 "PARAM c[8] = { program.local[0..6],\n" 6898 " { 1 } };\n" 6899 "TEMP R0;\n" 6900 "TEMP R1;\n" 6901 "MUL R0.xyz, fragment.position.y, c[2];\n" 6902 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6903 "ADD R0.xyz, R0, c[3];\n" 6904 "RCP R0.z, R0.z;\n" 6905 "MUL R0.zw, R0.xyxy, R0.z;\n" 6906 "MUL R0.zw, R0, c[0].xyxy;\n" 6907 "TEX R1.x, R0.zwzw, texture[1], 2D;\n" 6908 "ADD R0.xy, fragment.position, c[5];\n" 6909 "MUL R0.xy, R0, c[4];\n" 6910 "TEX R0, R0, texture[0], 2D;\n" 6911 "DP4 R1.y, R0, c[6];\n" 6912 "ADD R1.x, -R1, c[7];\n" 6913 "MUL R0, fragment.color.primary, R1.x;\n" 6914 "MUL result.color, R0, R1.y;\n" 6915 "END\n" 6916 ; 6917 6918 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_NOMASK = 6919 "!!ARBfp1.0\n" 6920 "PARAM c[5] = { program.local[0..3],\n" 6921 " { 1 } };\n" 6922 "TEMP R0;\n" 6923 "MUL R0.xyz, fragment.position.y, c[2];\n" 6924 "MAD R0.xyz, fragment.position.x, c[1], R0;\n" 6925 "ADD R0.xyz, R0, c[3];\n" 6926 "RCP R0.z, R0.z;\n" 6927 "MUL R0.xy, R0, R0.z;\n" 6928 "MUL R0.xy, R0, c[0];\n" 6929 "TEX R0.x, R0, texture[0], 2D;\n" 6930 "ADD R0.x, -R0, c[4];\n" 6931 "MUL result.color, fragment.color.primary, R0.x;\n" 6932 "END\n" 6933 ; 6934 6935 static const char *mask_fragment_program_sources[num_fragment_masks] = { 6936 FragmentProgram_FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA, 6937 FragmentProgram_FRAGMENT_PROGRAM_MASK_ELLIPSE_AA, 6938 }; 6939 6940 static const char *painter_fragment_program_sources[num_fragment_brushes][num_fragment_composition_modes] = { 6941 { 6942 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, 6943 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY, 6944 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN, 6945 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY, 6946 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN, 6947 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN, 6948 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE, 6949 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN, 6950 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT, 6951 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT, 6952 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE, 6953 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION, 6954 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, 6955 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY_NOMASK, 6956 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN_NOMASK, 6957 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY_NOMASK, 6958 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN_NOMASK, 6959 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN_NOMASK, 6960 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE_NOMASK, 6961 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN_NOMASK, 6962 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT_NOMASK, 6963 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT_NOMASK, 6964 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE_NOMASK, 6965 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION_NOMASK, 6966 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_MASK, 6967 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_NOMASK, 6968 }, 6969 { 6970 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, 6971 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY, 6972 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN, 6973 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY, 6974 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN, 6975 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN, 6976 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE, 6977 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN, 6978 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT, 6979 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT, 6980 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE, 6981 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION, 6982 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, 6983 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY_NOMASK, 6984 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN_NOMASK, 6985 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY_NOMASK, 6986 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN_NOMASK, 6987 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN_NOMASK, 6988 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE_NOMASK, 6989 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN_NOMASK, 6990 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT_NOMASK, 6991 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK, 6992 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE_NOMASK, 6993 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION_NOMASK, 6994 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_MASK, 6995 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_NOMASK, 6996 }, 6997 { 6998 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, 6999 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY, 7000 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN, 7001 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY, 7002 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN, 7003 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN, 7004 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE, 7005 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN, 7006 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT, 7007 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT, 7008 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE, 7009 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION, 7010 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, 7011 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY_NOMASK, 7012 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN_NOMASK, 7013 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY_NOMASK, 7014 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN_NOMASK, 7015 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN_NOMASK, 7016 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE_NOMASK, 7017 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN_NOMASK, 7018 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT_NOMASK, 7019 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK, 7020 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE_NOMASK, 7021 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION_NOMASK, 7022 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_MASK, 7023 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_NOMASK, 7024 }, 7025 { 7026 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, 7027 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY, 7028 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN, 7029 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY, 7030 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN, 7031 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN, 7032 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE, 7033 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN, 7034 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT, 7035 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT, 7036 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE, 7037 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION, 7038 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, 7039 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY_NOMASK, 7040 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN_NOMASK, 7041 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY_NOMASK, 7042 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN_NOMASK, 7043 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN_NOMASK, 7044 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE_NOMASK, 7045 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN_NOMASK, 7046 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT_NOMASK, 7047 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT_NOMASK, 7048 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE_NOMASK, 7049 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION_NOMASK, 7050 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_MASK, 7051 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_NOMASK, 7052 }, 7053 { 7054 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, 7055 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY, 7056 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN, 7057 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY, 7058 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN, 7059 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN, 7060 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE, 7061 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN, 7062 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT, 7063 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT, 7064 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE, 7065 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION, 7066 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, 7067 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY_NOMASK, 7068 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN_NOMASK, 7069 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY_NOMASK, 7070 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN_NOMASK, 7071 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN_NOMASK, 7072 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE_NOMASK, 7073 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN_NOMASK, 7074 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT_NOMASK, 7075 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT_NOMASK, 7076 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE_NOMASK, 7077 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION_NOMASK, 7078 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_MASK, 7079 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_NOMASK, 7080 }, 7081 { 7082 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF, 7083 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY, 7084 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN, 7085 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY, 7086 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN, 7087 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN, 7088 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE, 7089 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN, 7090 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT, 7091 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT, 7092 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE, 7093 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION, 7094 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK, 7095 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY_NOMASK, 7096 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN_NOMASK, 7097 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY_NOMASK, 7098 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN_NOMASK, 7099 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN_NOMASK, 7100 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE_NOMASK, 7101 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN_NOMASK, 7102 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT_NOMASK, 7103 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT_NOMASK, 7104 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE_NOMASK, 7105 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION_NOMASK, 7106 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_MASK, 7107 FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_NOMASK, 7108 }, 7109 }; 7110 7111 static int painter_variable_locations[num_fragment_brushes][num_fragment_composition_modes][num_fragment_variables] = { 7112 { 7113 { -1, -1, -1, 2, -1, 0, 5, -1, 1, 3, 1, 0, -1, 4, -1, -1, -1, -1, -1, }, 7114 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7115 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7116 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7117 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7118 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7119 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7120 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7121 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7122 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7123 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7124 { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, }, 7125 { -1, -1, -1, -1, -1, 0, -1, -1, 1, 2, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7126 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7127 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7128 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7129 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7130 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7131 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7132 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7133 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7134 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7135 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7136 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, }, 7137 { -1, -1, -1, 0, -1, -1, 2, -1, -1, -1, 0, -1, -1, 1, -1, -1, -1, -1, -1, }, 7138 { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }, 7139 }, 7140 { 7141 { -1, -1, 3, 7, 4, 5, 10, -1, 6, 8, 1, 0, 2, 9, -1, 1, 0, 2, -1, }, 7142 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7143 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7144 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7145 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7146 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7147 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7148 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7149 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7150 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7151 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7152 { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, }, 7153 { -1, -1, 3, -1, 4, 5, -1, -1, 6, 7, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7154 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7155 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7156 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7157 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7158 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7159 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7160 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7161 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7162 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7163 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7164 { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, }, 7165 { -1, -1, 3, 5, 4, -1, 7, -1, -1, -1, 0, -1, 1, 6, -1, 1, 0, 2, -1, }, 7166 { -1, -1, 3, -1, 4, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, 0, 2, -1, }, 7167 }, 7168 { 7169 { -1, -1, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, 2, 8, -1, -1, -1, 1, 0, }, 7170 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7171 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7172 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7173 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7174 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7175 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7176 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7177 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7178 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7179 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7180 { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, }, 7181 { -1, -1, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7182 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7183 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7184 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7185 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7186 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7187 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7188 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7189 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7190 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7191 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7192 { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, }, 7193 { -1, -1, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, 1, 5, -1, -1, -1, 1, 0, }, 7194 { -1, -1, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 0, }, 7195 }, 7196 { 7197 { -1, 0, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, 2, 8, -1, -1, -1, 1, -1, }, 7198 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7199 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7200 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7201 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7202 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7203 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7204 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7205 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7206 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7207 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7208 { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, }, 7209 { -1, 0, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7210 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7211 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7212 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7213 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7214 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7215 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7216 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7217 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7218 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7219 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7220 { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, }, 7221 { -1, 0, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, 1, 5, -1, -1, -1, 1, -1, }, 7222 { -1, 0, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, }, 7223 }, 7224 { 7225 { 2, -1, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, -1, 8, 0, -1, -1, 1, -1, }, 7226 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7227 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7228 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7229 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7230 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7231 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7232 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7233 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7234 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7235 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 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 { 1, -1, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7238 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7239 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7240 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7241 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7242 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7243 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7244 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7245 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7246 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7247 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -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, 4, 3, -1, 6, -1, -1, -1, 0, -1, -1, 5, 0, -1, -1, 1, -1, }, 7250 { 0, -1, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, -1, }, 7251 }, 7252 { 7253 { 2, -1, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, -1, 8, 0, -1, -1, 1, -1, }, 7254 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7255 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7256 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7257 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7258 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7259 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7260 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7261 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7262 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7263 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7264 { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, }, 7265 { 1, -1, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7266 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7267 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7268 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7269 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7270 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7271 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7272 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7273 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7274 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7275 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7276 { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, }, 7277 { 1, -1, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, -1, 5, 0, -1, -1, 1, -1, }, 7278 { 0, -1, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, -1, }, 7279 }, 7280 }; 7281 7282 static int mask_variable_locations[num_fragment_masks][num_fragment_variables] = { 7283 { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }, 7284 { -1, -1, 1, -1, 2, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, }, 7285 }; 7286 7287 #endif 7288