src/opengl/util/fragmentprograms_p.h
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
   517     ;
   517     ;
   518 
   518 
   519 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT =
   519 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT =
   520     "!!ARBfp1.0\n"
   520     "!!ARBfp1.0\n"
   521     "PARAM c[6] = { program.local[0..3],\n"
   521     "PARAM c[6] = { program.local[0..3],\n"
   522     "		{ 1, 2, 9.9999997e-006, 8 },\n"
   522     "		{ 1, 2, 9.9999997e-006, 4 },\n"
   523     "		{ 3 } };\n"
   523     "		{ 16, 12, 3 } };\n"
   524     "TEMP R0;\n"
   524     "TEMP R0;\n"
   525     "TEMP R1;\n"
   525     "TEMP R1;\n"
   526     "TEMP R2;\n"
   526     "TEMP R2;\n"
   527     "TEMP R3;\n"
   527     "TEMP R3;\n"
   528     "TEMP R4;\n"
   528     "TEMP R4;\n"
   529     "TEMP R5;\n"
   529     "TEMP R5;\n"
   530     "MUL R0.xy, fragment.position, c[1];\n"
   530     "MUL R0.xy, fragment.position, c[1];\n"
   531     "TEX R0, R0, texture[0], 2D;\n"
   531     "TEX R0, R0, texture[0], 2D;\n"
   532     "MAX R1.x, R0.w, c[4].z;\n"
   532     "MAX R1.x, R0.w, c[4].z;\n"
   533     "RCP R1.w, R1.x;\n"
   533     "RCP R1.x, R1.x;\n"
   534     "MUL R1.xyz, R0, R1.w;\n"
   534     "MUL R2.xyz, R0, R1.x;\n"
   535     "MUL R4.xyz, -R1, c[4].w;\n"
   535     "MAD R1.xyz, R2, c[5].x, -c[5].y;\n"
   536     "RSQ R2.x, R1.x;\n"
   536     "MAD R3.xyz, R2, R1, c[5].z;\n"
   537     "RSQ R2.z, R1.z;\n"
   537     "MAD R1.xyz, fragment.color.primary, c[4].y, -fragment.color.primary.w;\n"
   538     "RSQ R2.y, R1.y;\n"
   538     "MUL R4.xyz, R0.w, R1;\n"
   539     "MAD R1.xyz, -R0, R1.w, c[4].x;\n"
   539     "MUL R5.xyz, R4, R3;\n"
   540     "RCP R2.x, R2.x;\n"
   540     "RSQ R1.w, R2.x;\n"
   541     "RCP R2.z, R2.z;\n"
   541     "RSQ R2.w, R2.z;\n"
   542     "RCP R2.y, R2.y;\n"
   542     "RCP R3.x, R1.w;\n"
   543     "MAD R3.xyz, R0.w, R2, -R0;\n"
   543     "RSQ R1.w, R2.y;\n"
   544     "MAD R2.xyz, fragment.color.primary, c[4].y, -fragment.color.primary.w;\n"
   544     "MUL R5.xyz, R2, R5;\n"
   545     "MUL R3.xyz, R2, R3;\n"
   545     "RCP R3.z, R2.w;\n"
   546     "ADD R5.xyz, R4, c[5].x;\n"
   546     "RCP R3.y, R1.w;\n"
   547     "MUL R4.xyz, R1, R2;\n"
   547     "ADD R3.xyz, -R2, R3;\n"
   548     "MAD R1.xyz, -R1, R2, fragment.color.primary.w;\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"
   549     "MUL R2.xyz, fragment.color.primary, c[4].y;\n"
   551     "MUL R2.xyz, fragment.color.primary, c[4].y;\n"
   550     "MAD R5.xyz, -R4, R5, fragment.color.primary.w;\n"
   552     "MAD R4.xyz, fragment.color.primary.w, R0, R5;\n"
   551     "MAD R3.xyz, fragment.color.primary.w, R0, R3;\n"
   553     "MAD R3.xyz, fragment.color.primary.w, R0, R3;\n"
   552     "MAD R4.xyz, -R0, R5, R3;\n"
   554     "ADD R5.xyz, R3, -R4;\n"
   553     "MUL R3.xyz, R0, c[4].w;\n"
   555     "MUL R3.xyz, R0, c[4].w;\n"
   554     "MUL R5.xyz, R0, R5;\n"
       
   555     "SGE R3.xyz, R3, R0.w;\n"
   556     "SGE R3.xyz, R3, R0.w;\n"
   556     "MAD R3.xyz, R3, R4, R5;\n"
   557     "MAD R3.xyz, R3, R5, R4;\n"
   557     "MAD R3.xyz, -R0, R1, R3;\n"
   558     "MAD R3.xyz, -R0, R1, R3;\n"
   558     "MUL R1.xyz, R0, R1;\n"
   559     "MUL R1.xyz, R0, R1;\n"
   559     "SGE R2.xyz, R2, fragment.color.primary.w;\n"
   560     "SGE R2.xyz, R2, fragment.color.primary.w;\n"
   560     "MAD R2.xyz, R2, R3, R1;\n"
   561     "MAD R2.xyz, R2, R3, R1;\n"
   561     "ADD R1.x, -R0.w, c[4];\n"
   562     "ADD R1.x, -R0.w, c[4];\n"
   859     ;
   860     ;
   860 
   861 
   861 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
   862 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
   862     "!!ARBfp1.0\n"
   863     "!!ARBfp1.0\n"
   863     "PARAM c[3] = { program.local[0],\n"
   864     "PARAM c[3] = { program.local[0],\n"
   864     "		{ 1, 2, 9.9999997e-006, 8 },\n"
   865     "		{ 1, 2, 9.9999997e-006, 4 },\n"
   865     "		{ 3 } };\n"
   866     "		{ 16, 12, 3 } };\n"
   866     "TEMP R0;\n"
   867     "TEMP R0;\n"
   867     "TEMP R1;\n"
   868     "TEMP R1;\n"
   868     "TEMP R2;\n"
   869     "TEMP R2;\n"
   869     "TEMP R3;\n"
   870     "TEMP R3;\n"
   870     "TEMP R4;\n"
   871     "TEMP R4;\n"
   871     "TEMP R5;\n"
   872     "TEMP R5;\n"
   872     "MUL R0.xy, fragment.position, c[0];\n"
   873     "MUL R0.xy, fragment.position, c[0];\n"
   873     "TEX R0, R0, texture[0], 2D;\n"
   874     "TEX R0, R0, texture[0], 2D;\n"
   874     "MAX R1.x, R0.w, c[1].z;\n"
   875     "MAX R1.x, R0.w, c[1].z;\n"
   875     "RCP R1.w, R1.x;\n"
   876     "RCP R1.x, R1.x;\n"
   876     "MUL R1.xyz, R0, R1.w;\n"
   877     "MUL R2.xyz, R0, R1.x;\n"
   877     "MUL R4.xyz, -R1, c[1].w;\n"
   878     "MAD R1.xyz, R2, c[2].x, -c[2].y;\n"
   878     "RSQ R2.x, R1.x;\n"
   879     "MAD R3.xyz, R2, R1, c[2].z;\n"
   879     "RSQ R2.z, R1.z;\n"
   880     "MAD R1.xyz, fragment.color.primary, c[1].y, -fragment.color.primary.w;\n"
   880     "RSQ R2.y, R1.y;\n"
   881     "MUL R4.xyz, R0.w, R1;\n"
   881     "RCP R2.x, R2.x;\n"
   882     "MUL R5.xyz, R4, R3;\n"
   882     "RCP R2.z, R2.z;\n"
   883     "RSQ R1.w, R2.x;\n"
   883     "RCP R2.y, R2.y;\n"
   884     "RCP R3.x, R1.w;\n"
   884     "MAD R3.xyz, R0.w, R2, -R0;\n"
   885     "RSQ R2.w, R2.z;\n"
   885     "MAD R2.xyz, fragment.color.primary, c[1].y, -fragment.color.primary.w;\n"
   886     "RSQ R1.w, R2.y;\n"
   886     "MUL R3.xyz, R2, R3;\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"
   887     "MAD R3.xyz, fragment.color.primary.w, R0, R3;\n"
   896     "MAD R3.xyz, fragment.color.primary.w, R0, R3;\n"
   888     "MAD R1.xyz, -R0, R1.w, c[1].x;\n"
   897     "ADD R5.xyz, R3, -R4;\n"
   889     "ADD R5.xyz, R4, c[2].x;\n"
       
   890     "MUL R4.xyz, R1, R2;\n"
       
   891     "MAD R1.xyz, -R1, R2, fragment.color.primary.w;\n"
       
   892     "MAD R5.xyz, -R4, R5, fragment.color.primary.w;\n"
       
   893     "MAD R4.xyz, -R0, R5, R3;\n"
       
   894     "MUL R3.xyz, R0, c[1].w;\n"
   898     "MUL R3.xyz, R0, c[1].w;\n"
   895     "MUL R2.xyz, fragment.color.primary, c[1].y;\n"
       
   896     "MUL R5.xyz, R0, R5;\n"
       
   897     "SGE R3.xyz, R3, R0.w;\n"
   899     "SGE R3.xyz, R3, R0.w;\n"
   898     "MAD R3.xyz, R3, R4, R5;\n"
   900     "MAD R3.xyz, R3, R5, R4;\n"
   899     "MAD R3.xyz, -R0, R1, R3;\n"
   901     "MAD R3.xyz, -R0, R1, R3;\n"
   900     "MUL R1.xyz, R0, R1;\n"
   902     "MUL R1.xyz, R0, R1;\n"
   901     "SGE R2.xyz, R2, fragment.color.primary.w;\n"
   903     "SGE R2.xyz, R2, fragment.color.primary.w;\n"
   902     "MAD R2.xyz, R2, R3, R1;\n"
   904     "MAD R2.xyz, R2, R3, R1;\n"
   903     "ADD R1.x, -R0.w, c[1];\n"
   905     "ADD R1.x, -R0.w, c[1];\n"
  1455 
  1457 
  1456 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT =
  1458 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT =
  1457     "!!ARBfp1.0\n"
  1459     "!!ARBfp1.0\n"
  1458     "PARAM c[11] = { program.local[0..8],\n"
  1460     "PARAM c[11] = { program.local[0..8],\n"
  1459     "		{ 2, 4, 1, 9.9999997e-006 },\n"
  1461     "		{ 2, 4, 1, 9.9999997e-006 },\n"
  1460     "		{ 8, 3 } };\n"
  1462     "		{ 16, 12, 3 } };\n"
  1461     "TEMP R0;\n"
  1463     "TEMP R0;\n"
  1462     "TEMP R1;\n"
  1464     "TEMP R1;\n"
  1463     "TEMP R2;\n"
  1465     "TEMP R2;\n"
  1464     "TEMP R3;\n"
  1466     "TEMP R3;\n"
  1465     "TEMP R4;\n"
  1467     "TEMP R4;\n"
  1467     "TEMP R6;\n"
  1469     "TEMP R6;\n"
  1468     "MUL R0.xyz, fragment.position.y, c[3];\n"
  1470     "MUL R0.xyz, fragment.position.y, c[3];\n"
  1469     "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
  1471     "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
  1470     "ADD R0.xyz, R0, c[4];\n"
  1472     "ADD R0.xyz, R0, c[4];\n"
  1471     "RCP R0.z, R0.z;\n"
  1473     "RCP R0.z, R0.z;\n"
  1472     "MUL R1.xy, fragment.position, c[6];\n"
       
  1473     "TEX R1, R1, texture[0], 2D;\n"
       
  1474     "MAX R0.w, R1, c[9];\n"
       
  1475     "RCP R2.w, R0.w;\n"
       
  1476     "MUL R5.xyz, R1, R2.w;\n"
       
  1477     "MUL R0.xy, R0, R0.z;\n"
  1474     "MUL R0.xy, R0, R0.z;\n"
  1478     "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
  1475     "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
  1479     "ADD R0.z, R0, R0.w;\n"
  1476     "ADD R0.z, R0, R0.w;\n"
  1480     "MUL R0.xy, R0, c[0];\n"
  1477     "MUL R0.xy, R0, c[0];\n"
  1481     "ADD R0.x, R0, R0.y;\n"
  1478     "ADD R0.x, R0, R0.y;\n"
  1482     "MUL R0.y, R0.x, c[9].x;\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"
  1483     "MOV R0.x, c[9];\n"
  1488     "MOV R0.x, c[9];\n"
  1484     "RSQ R2.x, R5.x;\n"
  1489     "MUL R0.x, R0, c[1];\n"
  1485     "RSQ R2.z, R5.z;\n"
  1490     "MAX R0.z, R1.w, c[9].w;\n"
  1486     "RSQ R2.y, R5.y;\n"
  1491     "RCP R0.z, R0.z;\n"
  1487     "MUL R0.z, -R0, c[1].x;\n"
  1492     "MUL R3.xyz, R1, R0.z;\n"
  1488     "MUL R0.z, R0, c[9].y;\n"
  1493     "MAD R4.xyz, R3, c[10].x, -c[10].y;\n"
  1489     "MAD R0.z, R0.y, R0.y, -R0;\n"
  1494     "RCP R0.x, R0.x;\n"
  1490     "MUL R0.w, R0.x, c[1].x;\n"
  1495     "MUL R0.x, R0.y, R0;\n"
  1491     "RSQ R0.z, R0.z;\n"
       
  1492     "RCP R0.x, R0.z;\n"
       
  1493     "RCP R0.z, R0.w;\n"
       
  1494     "ADD R0.x, -R0.y, R0;\n"
       
  1495     "MUL R0.x, R0, R0.z;\n"
       
  1496     "TEX R0, R0, texture[2], 1D;\n"
  1496     "TEX R0, R0, texture[2], 1D;\n"
  1497     "MAD R3.xyz, R0, c[9].x, -R0.w;\n"
  1497     "MAD R2.xyz, R0, c[9].x, -R0.w;\n"
  1498     "MAD R6.xyz, -R5, c[10].x, c[10].y;\n"
  1498     "MAD R4.xyz, R3, R4, c[10].z;\n"
  1499     "RCP R2.x, R2.x;\n"
  1499     "MUL R5.xyz, R1.w, R2;\n"
  1500     "RCP R2.z, R2.z;\n"
  1500     "MUL R6.xyz, R5, R4;\n"
  1501     "RCP R2.y, R2.y;\n"
  1501     "RSQ R2.w, R3.x;\n"
  1502     "MAD R2.xyz, R1.w, R2, -R1;\n"
  1502     "RCP R4.x, R2.w;\n"
  1503     "MUL R2.xyz, R3, R2;\n"
  1503     "RSQ R2.w, R3.y;\n"
  1504     "MAD R4.xyz, R0.w, R1, R2;\n"
  1504     "RSQ R3.w, R3.z;\n"
  1505     "MAD R2.xyz, -R1, R2.w, c[9].z;\n"
  1505     "RCP R4.y, R2.w;\n"
  1506     "MUL R5.xyz, R2, R3;\n"
  1506     "RCP R4.z, R3.w;\n"
  1507     "MAD R6.xyz, -R5, R6, R0.w;\n"
  1507     "ADD R4.xyz, -R3, R4;\n"
  1508     "MAD R5.xyz, -R1, R6, R4;\n"
  1508     "MUL R6.xyz, R3, R6;\n"
  1509     "MAD R2.xyz, -R2, R3, R0.w;\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"
  1510     "MUL R3.xyz, R0, c[9].x;\n"
  1512     "MUL R3.xyz, R0, c[9].x;\n"
  1511     "MUL R4.xyz, R1, c[10].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"
  1512     "SGE R3.xyz, R3, R0.w;\n"
  1520     "SGE R3.xyz, R3, R0.w;\n"
       
  1521     "MUL R2.xyz, R1, R2;\n"
  1513     "ADD R2.w, -R1, c[9].z;\n"
  1522     "ADD R2.w, -R1, c[9].z;\n"
  1514     "MUL R6.xyz, R1, R6;\n"
       
  1515     "SGE R4.xyz, R4, R1.w;\n"
       
  1516     "MAD R4.xyz, R4, R5, R6;\n"
       
  1517     "MAD R4.xyz, -R1, R2, R4;\n"
       
  1518     "MUL R2.xyz, R1, R2;\n"
       
  1519     "MAD R2.xyz, R3, R4, R2;\n"
  1523     "MAD R2.xyz, R3, R4, R2;\n"
  1520     "MAD R2.xyz, R0, R2.w, R2;\n"
  1524     "MAD R2.xyz, R0, R2.w, R2;\n"
  1521     "ADD R0.x, -R0.w, c[9].z;\n"
  1525     "ADD R0.x, -R0.w, c[9].z;\n"
  1522     "MAD R2.xyz, R1, R0.x, R2;\n"
  1526     "MAD R2.xyz, R1, R0.x, R2;\n"
  1523     "ADD R0.z, R0.w, R1.w;\n"
  1527     "ADD R0.z, R0.w, R1.w;\n"
  2058 
  2062 
  2059 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
  2063 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
  2060     "!!ARBfp1.0\n"
  2064     "!!ARBfp1.0\n"
  2061     "PARAM c[8] = { program.local[0..5],\n"
  2065     "PARAM c[8] = { program.local[0..5],\n"
  2062     "		{ 2, 4, 1, 9.9999997e-006 },\n"
  2066     "		{ 2, 4, 1, 9.9999997e-006 },\n"
  2063     "		{ 8, 3 } };\n"
  2067     "		{ 16, 12, 3 } };\n"
  2064     "TEMP R0;\n"
  2068     "TEMP R0;\n"
  2065     "TEMP R1;\n"
  2069     "TEMP R1;\n"
  2066     "TEMP R2;\n"
  2070     "TEMP R2;\n"
  2067     "TEMP R3;\n"
  2071     "TEMP R3;\n"
  2068     "TEMP R4;\n"
  2072     "TEMP R4;\n"
  2070     "TEMP R6;\n"
  2074     "TEMP R6;\n"
  2071     "MUL R0.xyz, fragment.position.y, c[3];\n"
  2075     "MUL R0.xyz, fragment.position.y, c[3];\n"
  2072     "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
  2076     "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
  2073     "ADD R0.xyz, R0, c[4];\n"
  2077     "ADD R0.xyz, R0, c[4];\n"
  2074     "RCP R0.z, R0.z;\n"
  2078     "RCP R0.z, R0.z;\n"
  2075     "MUL R1.xy, fragment.position, c[5];\n"
       
  2076     "TEX R1, R1, texture[0], 2D;\n"
       
  2077     "MAX R0.w, R1, c[6];\n"
       
  2078     "RCP R2.w, R0.w;\n"
       
  2079     "MUL R5.xyz, R1, R2.w;\n"
       
  2080     "MUL R0.xy, R0, R0.z;\n"
  2079     "MUL R0.xy, R0, R0.z;\n"
  2081     "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
  2080     "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
  2082     "ADD R0.z, R0, R0.w;\n"
  2081     "ADD R0.z, R0, R0.w;\n"
  2083     "MUL R0.xy, R0, c[0];\n"
  2082     "MUL R0.xy, R0, c[0];\n"
  2084     "ADD R0.x, R0, R0.y;\n"
  2083     "ADD R0.x, R0, R0.y;\n"
  2085     "MUL R0.y, R0.x, c[6].x;\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"
  2086     "MOV R0.x, c[6];\n"
  2093     "MOV R0.x, c[6];\n"
  2087     "RSQ R2.x, R5.x;\n"
  2094     "MUL R0.x, R0, c[1];\n"
  2088     "RSQ R2.z, R5.z;\n"
  2095     "MAX R0.z, R1.w, c[6].w;\n"
  2089     "RSQ R2.y, R5.y;\n"
  2096     "RCP R0.z, R0.z;\n"
  2090     "MUL R0.z, -R0, c[1].x;\n"
  2097     "MUL R3.xyz, R1, R0.z;\n"
  2091     "MUL R0.z, R0, c[6].y;\n"
  2098     "MAD R4.xyz, R3, c[7].x, -c[7].y;\n"
  2092     "MAD R0.z, R0.y, R0.y, -R0;\n"
  2099     "RCP R0.x, R0.x;\n"
  2093     "MUL R0.w, R0.x, c[1].x;\n"
  2100     "MUL R0.x, R0.y, R0;\n"
  2094     "RSQ R0.z, R0.z;\n"
       
  2095     "RCP R0.x, R0.z;\n"
       
  2096     "RCP R0.z, R0.w;\n"
       
  2097     "ADD R0.x, -R0.y, R0;\n"
       
  2098     "MUL R0.x, R0, R0.z;\n"
       
  2099     "TEX R0, R0, texture[1], 1D;\n"
  2101     "TEX R0, R0, texture[1], 1D;\n"
  2100     "MAD R3.xyz, R0, c[6].x, -R0.w;\n"
  2102     "MAD R2.xyz, R0, c[6].x, -R0.w;\n"
  2101     "MAD R6.xyz, -R5, c[7].x, c[7].y;\n"
  2103     "MAD R4.xyz, R3, R4, c[7].z;\n"
  2102     "RCP R2.x, R2.x;\n"
  2104     "MUL R5.xyz, R1.w, R2;\n"
  2103     "RCP R2.z, R2.z;\n"
  2105     "MUL R6.xyz, R5, R4;\n"
  2104     "RCP R2.y, R2.y;\n"
  2106     "RSQ R2.w, R3.x;\n"
  2105     "MAD R2.xyz, R1.w, R2, -R1;\n"
  2107     "RCP R4.x, R2.w;\n"
  2106     "MUL R2.xyz, R3, R2;\n"
  2108     "RSQ R2.w, R3.y;\n"
  2107     "MAD R4.xyz, R0.w, R1, R2;\n"
  2109     "RSQ R3.w, R3.z;\n"
  2108     "MAD R2.xyz, -R1, R2.w, c[6].z;\n"
  2110     "RCP R4.y, R2.w;\n"
  2109     "MUL R5.xyz, R2, R3;\n"
  2111     "RCP R4.z, R3.w;\n"
  2110     "MAD R2.xyz, -R2, R3, R0.w;\n"
  2112     "ADD R4.xyz, -R3, R4;\n"
  2111     "MAD R6.xyz, -R5, R6, R0.w;\n"
  2113     "MUL R6.xyz, R3, R6;\n"
  2112     "MAD R5.xyz, -R1, R6, R4;\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"
  2113     "MUL R3.xyz, R0, c[6].x;\n"
  2117     "MUL R3.xyz, R0, c[6].x;\n"
  2114     "MUL R4.xyz, R1, c[7].x;\n"
  2118     "MAD R5.xyz, R0.w, R1, R6;\n"
  2115     "MUL R6.xyz, 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"
  2116     "SGE R4.xyz, R4, R1.w;\n"
  2122     "SGE R4.xyz, R4, R1.w;\n"
  2117     "MAD R4.xyz, R4, R5, R6;\n"
  2123     "MAD R4.xyz, R4, R6, R5;\n"
  2118     "MAD R4.xyz, -R1, R2, R4;\n"
  2124     "MAD R4.xyz, -R1, R2, R4;\n"
  2119     "MUL R2.xyz, R1, R2;\n"
  2125     "MUL R2.xyz, R1, R2;\n"
  2120     "SGE R3.xyz, R3, R0.w;\n"
  2126     "SGE R3.xyz, R3, R0.w;\n"
  2121     "MAD R2.xyz, R3, R4, R2;\n"
  2127     "MAD R2.xyz, R3, R4, R2;\n"
  2122     "ADD R2.w, -R1, c[6].z;\n"
  2128     "ADD R2.w, -R1, c[6].z;\n"
  2897     "END\n"
  2903     "END\n"
  2898     ;
  2904     ;
  2899 
  2905 
  2900 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT =
  2906 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT =
  2901     "!!ARBfp1.0\n"
  2907     "!!ARBfp1.0\n"
  2902     "PARAM c[12] = { program.local[0..7],\n"
  2908     "PARAM c[13] = { program.local[0..7],\n"
  2903     "		{ 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
  2909     "		{ 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
  2904     "		{ 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
  2910     "		{ 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
  2905     "		{ 3.141593, 0.15915494, 1, 2 },\n"
  2911     "		{ 3.141593, 0.15915494, 1, 2 },\n"
  2906     "		{ 9.9999997e-006, 8, 3 } };\n"
  2912     "		{ 9.9999997e-006, 4, 16, 12 },\n"
       
  2913     "		{ 3 } };\n"
  2907     "TEMP R0;\n"
  2914     "TEMP R0;\n"
  2908     "TEMP R1;\n"
  2915     "TEMP R1;\n"
  2909     "TEMP R2;\n"
  2916     "TEMP R2;\n"
  2910     "TEMP R3;\n"
  2917     "TEMP R3;\n"
  2911     "TEMP R4;\n"
  2918     "TEMP R4;\n"
  2938     "ADD R0.z, -R0.w, R0;\n"
  2945     "ADD R0.z, -R0.w, R0;\n"
  2939     "CMP R0.z, -R0, R1.y, R1.x;\n"
  2946     "CMP R0.z, -R0, R1.y, R1.x;\n"
  2940     "ADD R0.w, -R0.z, c[10].x;\n"
  2947     "ADD R0.w, -R0.z, c[10].x;\n"
  2941     "CMP R0.x, R0, R0.w, R0.z;\n"
  2948     "CMP R0.x, R0, R0.w, R0.z;\n"
  2942     "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
  2949     "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
       
  2950     "TEX R1, R0.zwzw, texture[0], 2D;\n"
  2943     "CMP R0.x, -R0.y, -R0, R0;\n"
  2951     "CMP R0.x, -R0.y, -R0, R0;\n"
  2944     "TEX R1, R0.zwzw, texture[0], 2D;\n"
  2952     "MAX R0.z, R1.w, c[11].x;\n"
  2945     "MAX R0.y, R1.w, c[11].x;\n"
  2953     "RCP R2.x, R0.z;\n"
  2946     "RCP R2.w, R0.y;\n"
  2954     "MUL R3.xyz, R1, R2.x;\n"
  2947     "MUL R5.xyz, R1, R2.w;\n"
  2955     "MAD R4.xyz, R3, c[11].z, -c[11].w;\n"
  2948     "RSQ R2.x, R5.x;\n"
       
  2949     "RSQ R2.z, R5.z;\n"
       
  2950     "RSQ R2.y, R5.y;\n"
       
  2951     "ADD R0.x, R0, c[0];\n"
  2956     "ADD R0.x, R0, c[0];\n"
  2952     "MUL R0.x, R0, c[10].y;\n"
  2957     "MUL R0.x, R0, c[10].y;\n"
  2953     "FLR R0.y, R0.x;\n"
  2958     "FLR R0.y, R0.x;\n"
  2954     "ADD R0.x, R0, -R0.y;\n"
  2959     "ADD R0.x, R0, -R0.y;\n"
  2955     "TEX R0, R0, texture[2], 1D;\n"
  2960     "TEX R0, R0, texture[2], 1D;\n"
  2956     "MAD R3.xyz, R0, c[10].w, -R0.w;\n"
  2961     "MAD R2.xyz, R0, c[10].w, -R0.w;\n"
  2957     "MAD R6.xyz, -R5, c[11].y, c[11].z;\n"
  2962     "MAD R4.xyz, R3, R4, c[12].x;\n"
  2958     "RCP R2.x, R2.x;\n"
  2963     "MUL R5.xyz, R1.w, R2;\n"
  2959     "RCP R2.z, R2.z;\n"
  2964     "MUL R6.xyz, R5, R4;\n"
  2960     "RCP R2.y, R2.y;\n"
  2965     "RSQ R2.w, R3.x;\n"
  2961     "MAD R2.xyz, R1.w, R2, -R1;\n"
  2966     "RCP R4.x, R2.w;\n"
  2962     "MUL R2.xyz, R3, R2;\n"
  2967     "RSQ R2.w, R3.y;\n"
  2963     "MAD R4.xyz, R0.w, R1, R2;\n"
  2968     "RSQ R3.w, R3.z;\n"
  2964     "MAD R2.xyz, -R1, R2.w, c[10].z;\n"
  2969     "RCP R4.y, R2.w;\n"
  2965     "MUL R5.xyz, R2, R3;\n"
  2970     "RCP R4.z, R3.w;\n"
  2966     "MAD R6.xyz, -R5, R6, R0.w;\n"
  2971     "ADD R4.xyz, -R3, R4;\n"
  2967     "MAD R5.xyz, -R1, R6, R4;\n"
  2972     "MUL R6.xyz, R3, R6;\n"
  2968     "MAD R2.xyz, -R2, R3, R0.w;\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"
  2969     "MUL R3.xyz, R0, c[10].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"
  2970     "MUL R4.xyz, R1, c[11].y;\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"
  2971     "SGE R3.xyz, R3, R0.w;\n"
  2984     "SGE R3.xyz, R3, R0.w;\n"
       
  2985     "MUL R2.xyz, R1, R2;\n"
  2972     "ADD R2.w, -R1, c[10].z;\n"
  2986     "ADD R2.w, -R1, c[10].z;\n"
  2973     "MUL R6.xyz, R1, R6;\n"
       
  2974     "SGE R4.xyz, R4, R1.w;\n"
       
  2975     "MAD R4.xyz, R4, R5, R6;\n"
       
  2976     "MAD R4.xyz, -R1, R2, R4;\n"
       
  2977     "MUL R2.xyz, R1, R2;\n"
       
  2978     "MAD R2.xyz, R3, R4, R2;\n"
  2987     "MAD R2.xyz, R3, R4, R2;\n"
  2979     "MAD R2.xyz, R0, R2.w, R2;\n"
  2988     "MAD R2.xyz, R0, R2.w, R2;\n"
  2980     "ADD R0.x, -R0.w, c[10].z;\n"
  2989     "ADD R0.x, -R0.w, c[10].z;\n"
  2981     "MAD R2.xyz, R1, R0.x, R2;\n"
  2990     "MAD R2.xyz, R1, R0.x, R2;\n"
  2982     "ADD R0.z, R0.w, R1.w;\n"
  2991     "ADD R0.z, R0.w, R1.w;\n"
  3680     "END\n"
  3689     "END\n"
  3681     ;
  3690     ;
  3682 
  3691 
  3683 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
  3692 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
  3684     "!!ARBfp1.0\n"
  3693     "!!ARBfp1.0\n"
  3685     "PARAM c[9] = { program.local[0..4],\n"
  3694     "PARAM c[10] = { program.local[0..4],\n"
  3686     "		{ 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
  3695     "		{ 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
  3687     "		{ 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
  3696     "		{ 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
  3688     "		{ 3.141593, 0.15915494, 1, 2 },\n"
  3697     "		{ 3.141593, 0.15915494, 1, 2 },\n"
  3689     "		{ 9.9999997e-006, 8, 3 } };\n"
  3698     "		{ 9.9999997e-006, 4, 16, 12 },\n"
       
  3699     "		{ 3 } };\n"
  3690     "TEMP R0;\n"
  3700     "TEMP R0;\n"
  3691     "TEMP R1;\n"
  3701     "TEMP R1;\n"
  3692     "TEMP R2;\n"
  3702     "TEMP R2;\n"
  3693     "TEMP R3;\n"
  3703     "TEMP R3;\n"
  3694     "TEMP R4;\n"
  3704     "TEMP R4;\n"
  3721     "ADD R0.z, -R0.w, R0;\n"
  3731     "ADD R0.z, -R0.w, R0;\n"
  3722     "CMP R0.z, -R0, R1.y, R1.x;\n"
  3732     "CMP R0.z, -R0, R1.y, R1.x;\n"
  3723     "ADD R0.w, -R0.z, c[7].x;\n"
  3733     "ADD R0.w, -R0.z, c[7].x;\n"
  3724     "CMP R0.x, R0, R0.w, R0.z;\n"
  3734     "CMP R0.x, R0, R0.w, R0.z;\n"
  3725     "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
  3735     "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
       
  3736     "TEX R1, R0.zwzw, texture[0], 2D;\n"
  3726     "CMP R0.x, -R0.y, -R0, R0;\n"
  3737     "CMP R0.x, -R0.y, -R0, R0;\n"
  3727     "TEX R1, R0.zwzw, texture[0], 2D;\n"
  3738     "MAX R0.z, R1.w, c[8].x;\n"
  3728     "MAX R0.y, R1.w, c[8].x;\n"
  3739     "RCP R2.x, R0.z;\n"
  3729     "RCP R2.w, R0.y;\n"
  3740     "MUL R3.xyz, R1, R2.x;\n"
  3730     "MUL R5.xyz, R1, R2.w;\n"
  3741     "MAD R4.xyz, R3, c[8].z, -c[8].w;\n"
  3731     "RSQ R2.x, R5.x;\n"
       
  3732     "RSQ R2.z, R5.z;\n"
       
  3733     "RSQ R2.y, R5.y;\n"
       
  3734     "ADD R0.x, R0, c[0];\n"
  3742     "ADD R0.x, R0, c[0];\n"
  3735     "MUL R0.x, R0, c[7].y;\n"
  3743     "MUL R0.x, R0, c[7].y;\n"
  3736     "FLR R0.y, R0.x;\n"
  3744     "FLR R0.y, R0.x;\n"
  3737     "ADD R0.x, R0, -R0.y;\n"
  3745     "ADD R0.x, R0, -R0.y;\n"
  3738     "TEX R0, R0, texture[1], 1D;\n"
  3746     "TEX R0, R0, texture[1], 1D;\n"
  3739     "MAD R3.xyz, R0, c[7].w, -R0.w;\n"
  3747     "MAD R2.xyz, R0, c[7].w, -R0.w;\n"
  3740     "MAD R6.xyz, -R5, c[8].y, c[8].z;\n"
  3748     "MAD R4.xyz, R3, R4, c[9].x;\n"
  3741     "RCP R2.x, R2.x;\n"
  3749     "MUL R5.xyz, R1.w, R2;\n"
  3742     "RCP R2.z, R2.z;\n"
  3750     "MUL R6.xyz, R5, R4;\n"
  3743     "RCP R2.y, R2.y;\n"
  3751     "RSQ R2.w, R3.x;\n"
  3744     "MAD R2.xyz, R1.w, R2, -R1;\n"
  3752     "RCP R4.x, R2.w;\n"
  3745     "MUL R2.xyz, R3, R2;\n"
  3753     "RSQ R2.w, R3.y;\n"
  3746     "MAD R4.xyz, R0.w, R1, R2;\n"
  3754     "RSQ R3.w, R3.z;\n"
  3747     "MAD R2.xyz, -R1, R2.w, c[7].z;\n"
  3755     "RCP R4.y, R2.w;\n"
  3748     "MUL R5.xyz, R2, R3;\n"
  3756     "RCP R4.z, R3.w;\n"
  3749     "MAD R2.xyz, -R2, R3, R0.w;\n"
  3757     "ADD R4.xyz, -R3, R4;\n"
  3750     "MAD R6.xyz, -R5, R6, R0.w;\n"
  3758     "MUL R6.xyz, R3, R6;\n"
  3751     "MAD R5.xyz, -R1, R6, R4;\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"
  3752     "MUL R3.xyz, R0, c[7].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"
  3753     "MUL R4.xyz, R1, c[8].y;\n"
  3766     "MUL R4.xyz, R1, c[8].y;\n"
  3754     "MUL R6.xyz, R1, R6;\n"
       
  3755     "SGE R4.xyz, R4, R1.w;\n"
  3767     "SGE R4.xyz, R4, R1.w;\n"
  3756     "MAD R4.xyz, R4, R5, R6;\n"
  3768     "MAD R4.xyz, R4, R6, R5;\n"
  3757     "MAD R4.xyz, -R1, R2, R4;\n"
  3769     "MAD R4.xyz, -R1, R2, R4;\n"
  3758     "MUL R2.xyz, R1, R2;\n"
  3770     "MUL R2.xyz, R1, R2;\n"
  3759     "SGE R3.xyz, R3, R0.w;\n"
  3771     "SGE R3.xyz, R3, R0.w;\n"
  3760     "MAD R2.xyz, R3, R4, R2;\n"
  3772     "MAD R2.xyz, R3, R4, R2;\n"
  3761     "ADD R2.w, -R1, c[7].z;\n"
  3773     "ADD R2.w, -R1, c[7].z;\n"
  4354     ;
  4366     ;
  4355 
  4367 
  4356 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT =
  4368 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT =
  4357     "!!ARBfp1.0\n"
  4369     "!!ARBfp1.0\n"
  4358     "PARAM c[10] = { program.local[0..7],\n"
  4370     "PARAM c[10] = { program.local[0..7],\n"
  4359     "		{ 1, 2, 9.9999997e-006, 8 },\n"
  4371     "		{ 1, 2, 9.9999997e-006, 4 },\n"
  4360     "		{ 3 } };\n"
  4372     "		{ 16, 12, 3 } };\n"
  4361     "TEMP R0;\n"
  4373     "TEMP R0;\n"
  4362     "TEMP R1;\n"
  4374     "TEMP R1;\n"
  4363     "TEMP R2;\n"
  4375     "TEMP R2;\n"
  4364     "TEMP R3;\n"
  4376     "TEMP R3;\n"
  4365     "TEMP R4;\n"
  4377     "TEMP R4;\n"
  4366     "TEMP R5;\n"
  4378     "TEMP R5;\n"
  4367     "TEMP R6;\n"
  4379     "TEMP R6;\n"
  4368     "MUL R0.xy, fragment.position, c[5];\n"
       
  4369     "TEX R1, R0, texture[0], 2D;\n"
       
  4370     "MAX R0.w, R1, c[8].z;\n"
       
  4371     "RCP R2.w, R0.w;\n"
       
  4372     "MUL R2.xyz, R1, R2.w;\n"
       
  4373     "RSQ R0.w, R2.x;\n"
       
  4374     "MUL R5.xyz, -R2, c[8].w;\n"
       
  4375     "MUL R0.xyz, fragment.position.y, c[2];\n"
  4380     "MUL R0.xyz, fragment.position.y, c[2];\n"
  4376     "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
  4381     "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
  4377     "ADD R0.xyz, R0, c[3];\n"
  4382     "ADD R0.xyz, R0, c[3];\n"
  4378     "RCP R0.z, R0.z;\n"
  4383     "RCP R0.z, R0.z;\n"
  4379     "MUL R0.xy, R0, R0.z;\n"
  4384     "MUL R0.xy, R0, R0.z;\n"
  4380     "MUL R0.xy, R0, c[0];\n"
  4385     "MUL R0.xy, R0, c[0];\n"
  4381     "ADD R0.x, R0, R0.y;\n"
  4386     "ADD R0.x, R0, R0.y;\n"
  4382     "RSQ R0.z, R2.y;\n"
  4387     "MUL R1.xy, fragment.position, c[5];\n"
  4383     "RSQ R0.y, R2.z;\n"
  4388     "TEX R1, R1, texture[0], 2D;\n"
  4384     "MAD R2.xyz, -R1, R2.w, c[8].x;\n"
  4389     "MAX R0.z, R1.w, c[8];\n"
  4385     "RCP R3.x, R0.w;\n"
  4390     "RCP R0.z, R0.z;\n"
  4386     "RCP R3.y, R0.z;\n"
  4391     "MUL R3.xyz, R1, R0.z;\n"
  4387     "RCP R3.z, R0.y;\n"
  4392     "MAD R2.xyz, R3, c[9].x, -c[9].y;\n"
  4388     "MUL R0.x, R0, c[0].z;\n"
  4393     "MUL R0.x, R0, c[0].z;\n"
  4389     "TEX R0, R0, texture[2], 1D;\n"
  4394     "TEX R0, R0, texture[2], 1D;\n"
  4390     "MAD R4.xyz, R1.w, R3, -R1;\n"
  4395     "MAD R4.xyz, R3, R2, c[9].z;\n"
  4391     "MAD R3.xyz, R0, c[8].y, -R0.w;\n"
  4396     "MAD R2.xyz, R0, c[8].y, -R0.w;\n"
  4392     "MUL R4.xyz, R3, R4;\n"
  4397     "MUL R5.xyz, R1.w, R2;\n"
  4393     "ADD R6.xyz, R5, c[9].x;\n"
  4398     "MUL R6.xyz, R5, R4;\n"
  4394     "MUL R5.xyz, R2, R3;\n"
  4399     "RSQ R2.w, R3.x;\n"
  4395     "MAD R2.xyz, -R2, R3, R0.w;\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"
  4396     "MUL R3.xyz, R0, c[8].y;\n"
  4410     "MUL R3.xyz, R0, c[8].y;\n"
  4397     "MAD R6.xyz, -R5, R6, R0.w;\n"
  4411     "MAD R5.xyz, R0.w, R1, R6;\n"
  4398     "MAD R4.xyz, R0.w, R1, R4;\n"
  4412     "MAD R4.xyz, R0.w, R1, R4;\n"
  4399     "MAD R5.xyz, -R1, R6, R4;\n"
  4413     "ADD R6.xyz, R4, -R5;\n"
  4400     "MUL R4.xyz, R1, c[8].w;\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"
  4401     "SGE R3.xyz, R3, R0.w;\n"
  4418     "SGE R3.xyz, R3, R0.w;\n"
       
  4419     "MUL R2.xyz, R1, R2;\n"
  4402     "ADD R2.w, -R1, c[8].x;\n"
  4420     "ADD R2.w, -R1, c[8].x;\n"
  4403     "MUL R6.xyz, R1, R6;\n"
       
  4404     "SGE R4.xyz, R4, R1.w;\n"
       
  4405     "MAD R4.xyz, R4, R5, R6;\n"
       
  4406     "MAD R4.xyz, -R1, R2, R4;\n"
       
  4407     "MUL R2.xyz, R1, R2;\n"
       
  4408     "MAD R2.xyz, R3, R4, R2;\n"
  4421     "MAD R2.xyz, R3, R4, R2;\n"
  4409     "MAD R2.xyz, R0, R2.w, R2;\n"
  4422     "MAD R2.xyz, R0, R2.w, R2;\n"
  4410     "ADD R0.x, -R0.w, c[8];\n"
  4423     "ADD R0.x, -R0.w, c[8];\n"
  4411     "MAD R2.xyz, R1, R0.x, R2;\n"
  4424     "MAD R2.xyz, R1, R0.x, R2;\n"
  4412     "ADD R0.z, R0.w, R1.w;\n"
  4425     "ADD R0.z, R0.w, R1.w;\n"
  4813     ;
  4826     ;
  4814 
  4827 
  4815 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
  4828 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
  4816     "!!ARBfp1.0\n"
  4829     "!!ARBfp1.0\n"
  4817     "PARAM c[7] = { program.local[0..4],\n"
  4830     "PARAM c[7] = { program.local[0..4],\n"
  4818     "		{ 1, 2, 9.9999997e-006, 8 },\n"
  4831     "		{ 1, 2, 9.9999997e-006, 4 },\n"
  4819     "		{ 3 } };\n"
  4832     "		{ 16, 12, 3 } };\n"
  4820     "TEMP R0;\n"
  4833     "TEMP R0;\n"
  4821     "TEMP R1;\n"
  4834     "TEMP R1;\n"
  4822     "TEMP R2;\n"
  4835     "TEMP R2;\n"
  4823     "TEMP R3;\n"
  4836     "TEMP R3;\n"
  4824     "TEMP R4;\n"
  4837     "TEMP R4;\n"
  4825     "TEMP R5;\n"
  4838     "TEMP R5;\n"
  4826     "TEMP R6;\n"
  4839     "TEMP R6;\n"
  4827     "MUL R0.xy, fragment.position, c[4];\n"
       
  4828     "TEX R1, R0, texture[0], 2D;\n"
       
  4829     "MAX R0.w, R1, c[5].z;\n"
       
  4830     "RCP R2.w, R0.w;\n"
       
  4831     "MUL R2.xyz, R1, R2.w;\n"
       
  4832     "RSQ R0.w, R2.x;\n"
       
  4833     "MUL R5.xyz, -R2, c[5].w;\n"
       
  4834     "MUL R0.xyz, fragment.position.y, c[2];\n"
  4840     "MUL R0.xyz, fragment.position.y, c[2];\n"
  4835     "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
  4841     "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
  4836     "ADD R0.xyz, R0, c[3];\n"
  4842     "ADD R0.xyz, R0, c[3];\n"
  4837     "RCP R0.z, R0.z;\n"
  4843     "RCP R0.z, R0.z;\n"
  4838     "MUL R0.xy, R0, R0.z;\n"
  4844     "MUL R0.xy, R0, R0.z;\n"
  4839     "MUL R0.xy, R0, c[0];\n"
  4845     "MUL R0.xy, R0, c[0];\n"
  4840     "ADD R0.x, R0, R0.y;\n"
  4846     "ADD R0.x, R0, R0.y;\n"
  4841     "RSQ R0.z, R2.y;\n"
  4847     "MUL R1.xy, fragment.position, c[4];\n"
  4842     "RSQ R0.y, R2.z;\n"
  4848     "TEX R1, R1, texture[0], 2D;\n"
  4843     "MAD R2.xyz, -R1, R2.w, c[5].x;\n"
  4849     "MAX R0.z, R1.w, c[5];\n"
  4844     "RCP R3.x, R0.w;\n"
  4850     "RCP R0.z, R0.z;\n"
  4845     "RCP R3.y, R0.z;\n"
  4851     "MUL R3.xyz, R1, R0.z;\n"
  4846     "RCP R3.z, R0.y;\n"
  4852     "MAD R2.xyz, R3, c[6].x, -c[6].y;\n"
  4847     "MUL R0.x, R0, c[0].z;\n"
  4853     "MUL R0.x, R0, c[0].z;\n"
  4848     "TEX R0, R0, texture[1], 1D;\n"
  4854     "TEX R0, R0, texture[1], 1D;\n"
  4849     "MAD R4.xyz, R1.w, R3, -R1;\n"
  4855     "MAD R4.xyz, R3, R2, c[6].z;\n"
  4850     "MAD R3.xyz, R0, c[5].y, -R0.w;\n"
  4856     "MAD R2.xyz, R0, c[5].y, -R0.w;\n"
  4851     "MUL R4.xyz, R3, R4;\n"
  4857     "MUL R5.xyz, R1.w, R2;\n"
  4852     "ADD R6.xyz, R5, c[6].x;\n"
  4858     "MUL R6.xyz, R5, R4;\n"
  4853     "MUL R5.xyz, R2, R3;\n"
  4859     "RSQ R2.w, R3.x;\n"
  4854     "MAD R2.xyz, -R2, R3, R0.w;\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"
  4855     "MUL R3.xyz, R0, c[5].y;\n"
  4870     "MUL R3.xyz, R0, c[5].y;\n"
  4856     "MAD R6.xyz, -R5, R6, R0.w;\n"
  4871     "MAD R5.xyz, R0.w, R1, R6;\n"
  4857     "MAD R4.xyz, R0.w, R1, R4;\n"
  4872     "MAD R4.xyz, R0.w, R1, R4;\n"
  4858     "MAD R5.xyz, -R1, R6, R4;\n"
  4873     "ADD R6.xyz, R4, -R5;\n"
  4859     "MUL R4.xyz, R1, c[5].w;\n"
  4874     "MUL R4.xyz, R1, c[5].w;\n"
  4860     "MUL R6.xyz, R1, R6;\n"
       
  4861     "SGE R4.xyz, R4, R1.w;\n"
  4875     "SGE R4.xyz, R4, R1.w;\n"
  4862     "MAD R4.xyz, R4, R5, R6;\n"
  4876     "MAD R4.xyz, R4, R6, R5;\n"
  4863     "MAD R4.xyz, -R1, R2, R4;\n"
  4877     "MAD R4.xyz, -R1, R2, R4;\n"
  4864     "MUL R2.xyz, R1, R2;\n"
  4878     "MUL R2.xyz, R1, R2;\n"
  4865     "SGE R3.xyz, R3, R0.w;\n"
  4879     "SGE R3.xyz, R3, R0.w;\n"
  4866     "MAD R2.xyz, R3, R4, R2;\n"
  4880     "MAD R2.xyz, R3, R4, R2;\n"
  4867     "ADD R2.w, -R1, c[5].x;\n"
  4881     "ADD R2.w, -R1, c[5].x;\n"
  5331     ;
  5345     ;
  5332 
  5346 
  5333 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT =
  5347 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT =
  5334     "!!ARBfp1.0\n"
  5348     "!!ARBfp1.0\n"
  5335     "PARAM c[10] = { program.local[0..7],\n"
  5349     "PARAM c[10] = { program.local[0..7],\n"
  5336     "		{ 1, 2, 9.9999997e-006, 8 },\n"
  5350     "		{ 1, 2, 9.9999997e-006, 4 },\n"
  5337     "		{ 3 } };\n"
  5351     "		{ 16, 12, 3 } };\n"
  5338     "TEMP R0;\n"
  5352     "TEMP R0;\n"
  5339     "TEMP R1;\n"
  5353     "TEMP R1;\n"
  5340     "TEMP R2;\n"
  5354     "TEMP R2;\n"
  5341     "TEMP R3;\n"
  5355     "TEMP R3;\n"
  5342     "TEMP R4;\n"
  5356     "TEMP R4;\n"
  5343     "TEMP R5;\n"
  5357     "TEMP R5;\n"
  5344     "TEMP R6;\n"
  5358     "TEMP R6;\n"
  5345     "MUL R0.xy, fragment.position, c[5];\n"
  5359     "MUL R0.xyz, fragment.position.y, c[2];\n"
  5346     "TEX R1, R0, texture[0], 2D;\n"
  5360     "MUL R1.xy, fragment.position, c[5];\n"
  5347     "MAX R0.x, R1.w, c[8].z;\n"
  5361     "TEX R1, R1, texture[0], 2D;\n"
  5348     "RCP R2.w, R0.x;\n"
  5362     "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
  5349     "MUL R2.xyz, R1, R2.w;\n"
  5363     "ADD R0.xyz, R0, c[3];\n"
  5350     "RSQ R0.w, R2.x;\n"
  5364     "RCP R0.z, R0.z;\n"
  5351     "RCP R3.x, R0.w;\n"
  5365     "MUL R0.xy, R0, R0.z;\n"
  5352     "RSQ R0.w, R2.y;\n"
  5366     "MAX R0.w, R1, c[8].z;\n"
  5353     "MUL R5.xyz, -R2, c[8].w;\n"
  5367     "RCP R0.w, R0.w;\n"
  5354     "MUL R0.xyz, fragment.position.y, c[2];\n"
  5368     "MUL R3.xyz, R1, R0.w;\n"
  5355     "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
  5369     "MAD R2.xyz, R3, c[9].x, -c[9].y;\n"
  5356     "ADD R0.xyz, R0, c[3];\n"
       
  5357     "RCP R0.z, R0.z;\n"
       
  5358     "MUL R0.xy, R0, R0.z;\n"
       
  5359     "RSQ R0.z, R2.z;\n"
       
  5360     "MAD R2.xyz, -R1, R2.w, c[8].x;\n"
       
  5361     "RCP R3.y, R0.w;\n"
       
  5362     "RCP R3.z, R0.z;\n"
       
  5363     "MUL R0.xy, R0, c[0];\n"
  5370     "MUL R0.xy, R0, c[0];\n"
  5364     "TEX R0, R0, texture[2], 2D;\n"
  5371     "TEX R0, R0, texture[2], 2D;\n"
  5365     "MAD R4.xyz, R1.w, R3, -R1;\n"
  5372     "MAD R4.xyz, R3, R2, c[9].z;\n"
  5366     "MAD R3.xyz, R0, c[8].y, -R0.w;\n"
  5373     "MAD R2.xyz, R0, c[8].y, -R0.w;\n"
  5367     "MUL R4.xyz, R3, R4;\n"
  5374     "MUL R5.xyz, R1.w, R2;\n"
  5368     "ADD R6.xyz, R5, c[9].x;\n"
  5375     "MUL R6.xyz, R5, R4;\n"
  5369     "MUL R5.xyz, R2, R3;\n"
  5376     "RSQ R2.w, R3.x;\n"
  5370     "MAD R2.xyz, -R2, R3, R0.w;\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"
  5371     "MUL R3.xyz, R0, c[8].y;\n"
  5387     "MUL R3.xyz, R0, c[8].y;\n"
  5372     "MAD R6.xyz, -R5, R6, R0.w;\n"
  5388     "MAD R5.xyz, R0.w, R1, R6;\n"
  5373     "MAD R4.xyz, R0.w, R1, R4;\n"
  5389     "MAD R4.xyz, R0.w, R1, R4;\n"
  5374     "MAD R5.xyz, -R1, R6, R4;\n"
  5390     "ADD R6.xyz, R4, -R5;\n"
  5375     "MUL R4.xyz, R1, c[8].w;\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"
  5376     "SGE R3.xyz, R3, R0.w;\n"
  5395     "SGE R3.xyz, R3, R0.w;\n"
       
  5396     "MUL R2.xyz, R1, R2;\n"
  5377     "ADD R2.w, -R1, c[8].x;\n"
  5397     "ADD R2.w, -R1, c[8].x;\n"
  5378     "MUL R6.xyz, R1, R6;\n"
       
  5379     "SGE R4.xyz, R4, R1.w;\n"
       
  5380     "MAD R4.xyz, R4, R5, R6;\n"
       
  5381     "MAD R4.xyz, -R1, R2, R4;\n"
       
  5382     "MUL R2.xyz, R1, R2;\n"
       
  5383     "MAD R2.xyz, R3, R4, R2;\n"
  5398     "MAD R2.xyz, R3, R4, R2;\n"
  5384     "MAD R2.xyz, R0, R2.w, R2;\n"
  5399     "MAD R2.xyz, R0, R2.w, R2;\n"
  5385     "ADD R0.x, -R0.w, c[8];\n"
  5400     "ADD R0.x, -R0.w, c[8];\n"
  5386     "MAD R2.xyz, R1, R0.x, R2;\n"
  5401     "MAD R2.xyz, R1, R0.x, R2;\n"
  5387     "ADD R0.z, R0.w, R1.w;\n"
  5402     "ADD R0.z, R0.w, R1.w;\n"
  5766     ;
  5781     ;
  5767 
  5782 
  5768 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
  5783 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
  5769     "!!ARBfp1.0\n"
  5784     "!!ARBfp1.0\n"
  5770     "PARAM c[7] = { program.local[0..4],\n"
  5785     "PARAM c[7] = { program.local[0..4],\n"
  5771     "		{ 1, 2, 9.9999997e-006, 8 },\n"
  5786     "		{ 1, 2, 9.9999997e-006, 4 },\n"
  5772     "		{ 3 } };\n"
  5787     "		{ 16, 12, 3 } };\n"
  5773     "TEMP R0;\n"
  5788     "TEMP R0;\n"
  5774     "TEMP R1;\n"
  5789     "TEMP R1;\n"
  5775     "TEMP R2;\n"
  5790     "TEMP R2;\n"
  5776     "TEMP R3;\n"
  5791     "TEMP R3;\n"
  5777     "TEMP R4;\n"
  5792     "TEMP R4;\n"
  5778     "TEMP R5;\n"
  5793     "TEMP R5;\n"
  5779     "TEMP R6;\n"
  5794     "TEMP R6;\n"
  5780     "MUL R0.xy, fragment.position, c[4];\n"
  5795     "MUL R0.xyz, fragment.position.y, c[2];\n"
  5781     "TEX R1, R0, texture[0], 2D;\n"
  5796     "MUL R1.xy, fragment.position, c[4];\n"
  5782     "MAX R0.x, R1.w, c[5].z;\n"
  5797     "TEX R1, R1, texture[0], 2D;\n"
  5783     "RCP R2.w, R0.x;\n"
  5798     "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
  5784     "MUL R2.xyz, R1, R2.w;\n"
  5799     "ADD R0.xyz, R0, c[3];\n"
  5785     "RSQ R0.w, R2.x;\n"
  5800     "RCP R0.z, R0.z;\n"
  5786     "RCP R3.x, R0.w;\n"
  5801     "MUL R0.xy, R0, R0.z;\n"
  5787     "RSQ R0.w, R2.y;\n"
  5802     "MAX R0.w, R1, c[5].z;\n"
  5788     "MUL R5.xyz, -R2, c[5].w;\n"
  5803     "RCP R0.w, R0.w;\n"
  5789     "MUL R0.xyz, fragment.position.y, c[2];\n"
  5804     "MUL R3.xyz, R1, R0.w;\n"
  5790     "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
  5805     "MAD R2.xyz, R3, c[6].x, -c[6].y;\n"
  5791     "ADD R0.xyz, R0, c[3];\n"
       
  5792     "RCP R0.z, R0.z;\n"
       
  5793     "MUL R0.xy, R0, R0.z;\n"
       
  5794     "RSQ R0.z, R2.z;\n"
       
  5795     "MAD R2.xyz, -R1, R2.w, c[5].x;\n"
       
  5796     "RCP R3.y, R0.w;\n"
       
  5797     "RCP R3.z, R0.z;\n"
       
  5798     "MUL R0.xy, R0, c[0];\n"
  5806     "MUL R0.xy, R0, c[0];\n"
  5799     "TEX R0, R0, texture[1], 2D;\n"
  5807     "TEX R0, R0, texture[1], 2D;\n"
  5800     "MAD R4.xyz, R1.w, R3, -R1;\n"
  5808     "MAD R4.xyz, R3, R2, c[6].z;\n"
  5801     "MAD R3.xyz, R0, c[5].y, -R0.w;\n"
  5809     "MAD R2.xyz, R0, c[5].y, -R0.w;\n"
  5802     "MUL R4.xyz, R3, R4;\n"
  5810     "MUL R5.xyz, R1.w, R2;\n"
  5803     "ADD R6.xyz, R5, c[6].x;\n"
  5811     "MUL R6.xyz, R5, R4;\n"
  5804     "MUL R5.xyz, R2, R3;\n"
  5812     "RSQ R2.w, R3.x;\n"
  5805     "MAD R2.xyz, -R2, R3, R0.w;\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"
  5806     "MUL R3.xyz, R0, c[5].y;\n"
  5823     "MUL R3.xyz, R0, c[5].y;\n"
  5807     "MAD R6.xyz, -R5, R6, R0.w;\n"
  5824     "MAD R5.xyz, R0.w, R1, R6;\n"
  5808     "MAD R4.xyz, R0.w, R1, R4;\n"
  5825     "MAD R4.xyz, R0.w, R1, R4;\n"
  5809     "MAD R5.xyz, -R1, R6, R4;\n"
  5826     "ADD R6.xyz, R4, -R5;\n"
  5810     "MUL R4.xyz, R1, c[5].w;\n"
  5827     "MUL R4.xyz, R1, c[5].w;\n"
  5811     "MUL R6.xyz, R1, R6;\n"
       
  5812     "SGE R4.xyz, R4, R1.w;\n"
  5828     "SGE R4.xyz, R4, R1.w;\n"
  5813     "MAD R4.xyz, R4, R5, R6;\n"
  5829     "MAD R4.xyz, R4, R6, R5;\n"
  5814     "MAD R4.xyz, -R1, R2, R4;\n"
  5830     "MAD R4.xyz, -R1, R2, R4;\n"
  5815     "MUL R2.xyz, R1, R2;\n"
  5831     "MUL R2.xyz, R1, R2;\n"
  5816     "SGE R3.xyz, R3, R0.w;\n"
  5832     "SGE R3.xyz, R3, R0.w;\n"
  5817     "MAD R2.xyz, R3, R4, R2;\n"
  5833     "MAD R2.xyz, R3, R4, R2;\n"
  5818     "ADD R2.w, -R1, c[5].x;\n"
  5834     "ADD R2.w, -R1, c[5].x;\n"
  6293     ;
  6309     ;
  6294 
  6310 
  6295 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT =
  6311 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT =
  6296     "!!ARBfp1.0\n"
  6312     "!!ARBfp1.0\n"
  6297     "PARAM c[10] = { program.local[0..7],\n"
  6313     "PARAM c[10] = { program.local[0..7],\n"
  6298     "		{ 1, 2, 9.9999997e-006, 8 },\n"
  6314     "		{ 1, 2, 9.9999997e-006, 4 },\n"
  6299     "		{ 3 } };\n"
  6315     "		{ 16, 12, 3 } };\n"
  6300     "TEMP R0;\n"
  6316     "TEMP R0;\n"
  6301     "TEMP R1;\n"
  6317     "TEMP R1;\n"
  6302     "TEMP R2;\n"
  6318     "TEMP R2;\n"
  6303     "TEMP R3;\n"
  6319     "TEMP R3;\n"
  6304     "TEMP R4;\n"
  6320     "TEMP R4;\n"
  6305     "TEMP R5;\n"
  6321     "TEMP R5;\n"
  6306     "TEMP R6;\n"
  6322     "TEMP R6;\n"
  6307     "MUL R0.xy, fragment.position, c[5];\n"
  6323     "MUL R0.xyz, fragment.position.y, c[2];\n"
  6308     "TEX R0, R0, texture[0], 2D;\n"
  6324     "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
  6309     "MAX R1.w, R0, c[8].z;\n"
  6325     "ADD R1.xyz, R0, c[3];\n"
  6310     "RCP R2.w, R1.w;\n"
       
  6311     "MUL R2.xyz, R0, R2.w;\n"
       
  6312     "RSQ R1.w, R2.x;\n"
       
  6313     "MUL R5.xyz, -R2, c[8].w;\n"
       
  6314     "MUL R1.xyz, fragment.position.y, c[2];\n"
       
  6315     "MAD R1.xyz, fragment.position.x, c[1], R1;\n"
       
  6316     "ADD R1.xyz, R1, c[3];\n"
       
  6317     "RCP R1.z, R1.z;\n"
  6326     "RCP R1.z, R1.z;\n"
  6318     "MUL R1.xy, R1, R1.z;\n"
  6327     "MUL R1.xy, R1, R1.z;\n"
  6319     "MUL R1.xy, R1, c[0];\n"
  6328     "MUL R1.xy, R1, c[0];\n"
  6320     "TEX R1.x, R1, texture[2], 2D;\n"
  6329     "TEX R1.x, R1, texture[2], 2D;\n"
  6321     "RSQ R1.z, R2.y;\n"
  6330     "MUL R0.xy, fragment.position, c[5];\n"
  6322     "RSQ R1.y, R2.z;\n"
  6331     "TEX R0, R0, texture[0], 2D;\n"
  6323     "MAD R2.xyz, -R0, R2.w, c[8].x;\n"
  6332     "MAX R1.z, R0.w, c[8];\n"
  6324     "RCP R3.x, R1.w;\n"
  6333     "RCP R1.z, R1.z;\n"
  6325     "RCP R3.y, R1.z;\n"
  6334     "MUL R3.xyz, R0, R1.z;\n"
  6326     "RCP R3.z, R1.y;\n"
  6335     "MAD R2.xyz, R3, c[9].x, -c[9].y;\n"
  6327     "ADD R1.x, -R1, c[8];\n"
  6336     "ADD R1.x, -R1, c[8];\n"
  6328     "MUL R1, fragment.color.primary, R1.x;\n"
  6337     "MUL R1, fragment.color.primary, R1.x;\n"
  6329     "MAD R4.xyz, R0.w, R3, -R0;\n"
  6338     "MAD R4.xyz, R3, R2, c[9].z;\n"
  6330     "MAD R3.xyz, R1, c[8].y, -R1.w;\n"
  6339     "MAD R2.xyz, R1, c[8].y, -R1.w;\n"
  6331     "MUL R4.xyz, R3, R4;\n"
  6340     "MUL R5.xyz, R0.w, R2;\n"
  6332     "ADD R6.xyz, R5, c[9].x;\n"
  6341     "MUL R6.xyz, R5, R4;\n"
  6333     "MUL R5.xyz, R2, R3;\n"
  6342     "RSQ R2.w, R3.x;\n"
  6334     "MAD R2.xyz, -R2, R3, R1.w;\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"
  6335     "MUL R3.xyz, R1, c[8].y;\n"
  6353     "MUL R3.xyz, R1, c[8].y;\n"
  6336     "MAD R6.xyz, -R5, R6, R1.w;\n"
  6354     "MAD R5.xyz, R1.w, R0, R6;\n"
  6337     "MAD R4.xyz, R1.w, R0, R4;\n"
  6355     "MAD R4.xyz, R1.w, R0, R4;\n"
  6338     "MAD R5.xyz, -R0, R6, R4;\n"
  6356     "ADD R6.xyz, R4, -R5;\n"
  6339     "MUL R4.xyz, R0, c[8].w;\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"
  6340     "SGE R3.xyz, R3, R1.w;\n"
  6361     "SGE R3.xyz, R3, R1.w;\n"
       
  6362     "MUL R2.xyz, R0, R2;\n"
  6341     "ADD R2.w, -R0, c[8].x;\n"
  6363     "ADD R2.w, -R0, c[8].x;\n"
  6342     "MUL R6.xyz, R0, R6;\n"
       
  6343     "SGE R4.xyz, R4, R0.w;\n"
       
  6344     "MAD R4.xyz, R4, R5, R6;\n"
       
  6345     "MAD R4.xyz, -R0, R2, R4;\n"
       
  6346     "MUL R2.xyz, R0, R2;\n"
       
  6347     "MAD R2.xyz, R3, R4, R2;\n"
  6364     "MAD R2.xyz, R3, R4, R2;\n"
  6348     "MAD R2.xyz, R1, R2.w, R2;\n"
  6365     "MAD R2.xyz, R1, R2.w, R2;\n"
  6349     "ADD R1.x, -R1.w, c[8];\n"
  6366     "ADD R1.x, -R1.w, c[8];\n"
  6350     "MAD R2.xyz, R0, R1.x, R2;\n"
  6367     "MAD R2.xyz, R0, R1.x, R2;\n"
  6351     "ADD R1.z, R1.w, R0.w;\n"
  6368     "ADD R1.z, R1.w, R0.w;\n"
  6753     ;
  6770     ;
  6754 
  6771 
  6755 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
  6772 static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
  6756     "!!ARBfp1.0\n"
  6773     "!!ARBfp1.0\n"
  6757     "PARAM c[7] = { program.local[0..4],\n"
  6774     "PARAM c[7] = { program.local[0..4],\n"
  6758     "		{ 1, 2, 9.9999997e-006, 8 },\n"
  6775     "		{ 1, 2, 9.9999997e-006, 4 },\n"
  6759     "		{ 3 } };\n"
  6776     "		{ 16, 12, 3 } };\n"
  6760     "TEMP R0;\n"
  6777     "TEMP R0;\n"
  6761     "TEMP R1;\n"
  6778     "TEMP R1;\n"
  6762     "TEMP R2;\n"
  6779     "TEMP R2;\n"
  6763     "TEMP R3;\n"
  6780     "TEMP R3;\n"
  6764     "TEMP R4;\n"
  6781     "TEMP R4;\n"
  6765     "TEMP R5;\n"
  6782     "TEMP R5;\n"
  6766     "TEMP R6;\n"
  6783     "TEMP R6;\n"
  6767     "MUL R0.xy, fragment.position, c[4];\n"
  6784     "MUL R0.xyz, fragment.position.y, c[2];\n"
  6768     "TEX R0, R0, texture[0], 2D;\n"
  6785     "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
  6769     "MAX R1.w, R0, c[5].z;\n"
  6786     "ADD R1.xyz, R0, c[3];\n"
  6770     "RCP R2.w, R1.w;\n"
       
  6771     "MUL R2.xyz, R0, R2.w;\n"
       
  6772     "RSQ R1.w, R2.x;\n"
       
  6773     "MUL R5.xyz, -R2, c[5].w;\n"
       
  6774     "MUL R1.xyz, fragment.position.y, c[2];\n"
       
  6775     "MAD R1.xyz, fragment.position.x, c[1], R1;\n"
       
  6776     "ADD R1.xyz, R1, c[3];\n"
       
  6777     "RCP R1.z, R1.z;\n"
  6787     "RCP R1.z, R1.z;\n"
  6778     "MUL R1.xy, R1, R1.z;\n"
  6788     "MUL R1.xy, R1, R1.z;\n"
  6779     "MUL R1.xy, R1, c[0];\n"
  6789     "MUL R1.xy, R1, c[0];\n"
  6780     "TEX R1.x, R1, texture[1], 2D;\n"
  6790     "TEX R1.x, R1, texture[1], 2D;\n"
  6781     "RSQ R1.z, R2.y;\n"
  6791     "MUL R0.xy, fragment.position, c[4];\n"
  6782     "RSQ R1.y, R2.z;\n"
  6792     "TEX R0, R0, texture[0], 2D;\n"
  6783     "MAD R2.xyz, -R0, R2.w, c[5].x;\n"
  6793     "MAX R1.z, R0.w, c[5];\n"
  6784     "RCP R3.x, R1.w;\n"
  6794     "RCP R1.z, R1.z;\n"
  6785     "RCP R3.y, R1.z;\n"
  6795     "MUL R3.xyz, R0, R1.z;\n"
  6786     "RCP R3.z, R1.y;\n"
  6796     "MAD R2.xyz, R3, c[6].x, -c[6].y;\n"
  6787     "ADD R1.x, -R1, c[5];\n"
  6797     "ADD R1.x, -R1, c[5];\n"
  6788     "MUL R1, fragment.color.primary, R1.x;\n"
  6798     "MUL R1, fragment.color.primary, R1.x;\n"
  6789     "MAD R4.xyz, R0.w, R3, -R0;\n"
  6799     "MAD R4.xyz, R3, R2, c[6].z;\n"
  6790     "MAD R3.xyz, R1, c[5].y, -R1.w;\n"
  6800     "MAD R2.xyz, R1, c[5].y, -R1.w;\n"
  6791     "MUL R4.xyz, R3, R4;\n"
  6801     "MUL R5.xyz, R0.w, R2;\n"
  6792     "ADD R6.xyz, R5, c[6].x;\n"
  6802     "MUL R6.xyz, R5, R4;\n"
  6793     "MUL R5.xyz, R2, R3;\n"
  6803     "RSQ R2.w, R3.x;\n"
  6794     "MAD R2.xyz, -R2, R3, R1.w;\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"
  6795     "MUL R3.xyz, R1, c[5].y;\n"
  6814     "MUL R3.xyz, R1, c[5].y;\n"
  6796     "MAD R6.xyz, -R5, R6, R1.w;\n"
  6815     "MAD R5.xyz, R1.w, R0, R6;\n"
  6797     "MAD R4.xyz, R1.w, R0, R4;\n"
  6816     "MAD R4.xyz, R1.w, R0, R4;\n"
  6798     "MAD R5.xyz, -R0, R6, R4;\n"
  6817     "ADD R6.xyz, R4, -R5;\n"
  6799     "MUL R4.xyz, R0, c[5].w;\n"
  6818     "MUL R4.xyz, R0, c[5].w;\n"
  6800     "MUL R6.xyz, R0, R6;\n"
       
  6801     "SGE R4.xyz, R4, R0.w;\n"
  6819     "SGE R4.xyz, R4, R0.w;\n"
  6802     "MAD R4.xyz, R4, R5, R6;\n"
  6820     "MAD R4.xyz, R4, R6, R5;\n"
  6803     "MAD R4.xyz, -R0, R2, R4;\n"
  6821     "MAD R4.xyz, -R0, R2, R4;\n"
  6804     "MUL R2.xyz, R0, R2;\n"
  6822     "MUL R2.xyz, R0, R2;\n"
  6805     "SGE R3.xyz, R3, R1.w;\n"
  6823     "SGE R3.xyz, R3, R1.w;\n"
  6806     "MAD R2.xyz, R3, R4, R2;\n"
  6824     "MAD R2.xyz, R3, R4, R2;\n"
  6807     "ADD R2.w, -R0, c[5].x;\n"
  6825     "ADD R2.w, -R0, c[5].x;\n"