| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrTextureDomain.h" | 8 #include "GrTextureDomain.h" |
| 9 #include "GrSimpleTextureEffect.h" | 9 #include "GrSimpleTextureEffect.h" |
| 10 #include "GrTBackendEffectFactory.h" | 10 #include "GrTBackendEffectFactory.h" |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 // call) causes the compilation error "Calls to any function tha
t | 89 // call) causes the compilation error "Calls to any function tha
t |
| 90 // may require a gradient calculation inside a conditional block | 90 // may require a gradient calculation inside a conditional block |
| 91 // may return undefined results". This appears to be an issue wi
th | 91 // may return undefined results". This appears to be an issue wi
th |
| 92 // the 'any' call since even the simple "result=black; if (any()
) | 92 // the 'any' call since even the simple "result=black; if (any()
) |
| 93 // result=white;" code fails to compile. | 93 // result=white;" code fails to compile. |
| 94 builder->fsCodeAppend("\tvec4 outside = vec4(0.0, 0.0, 0.0, 0.0)
;\n"); | 94 builder->fsCodeAppend("\tvec4 outside = vec4(0.0, 0.0, 0.0, 0.0)
;\n"); |
| 95 builder->fsCodeAppend("\tvec4 inside = "); | 95 builder->fsCodeAppend("\tvec4 inside = "); |
| 96 builder->fsAppendTextureLookupAndModulate(inModulateColor, sampl
er, | 96 builder->fsAppendTextureLookupAndModulate(inModulateColor, sampl
er, |
| 97 inCoords.c_str()); | 97 inCoords.c_str()); |
| 98 builder->fsCodeAppend(";\n"); | 98 builder->fsCodeAppend(";\n"); |
| 99 builder->fsCodeAppendf("\tfloat x = (%s).x;\n", inCoords.c_str()
); |
| 100 builder->fsCodeAppendf("\tfloat y = (%s).y;\n", inCoords.c_str()
); |
| 99 | 101 |
| 100 builder->fsCodeAppendf("\tfloat x = abs(2.0*(%s.x - %s.x)/(%s.z
- %s.x) - 1.0);\n", | 102 builder->fsCodeAppendf("\tx = abs(2.0*(x - %s.x)/(%s.z - %s.x) -
1.0);\n", |
| 101 inCoords.c_str(), domain, domain, domain
); | 103 domain, domain, domain); |
| 102 builder->fsCodeAppendf("\tfloat y = abs(2.0*(%s.y - %s.y)/(%s.w
- %s.y) - 1.0);\n", | 104 builder->fsCodeAppendf("\ty = abs(2.0*(y - %s.y)/(%s.w - %s.y) -
1.0);\n", |
| 103 inCoords.c_str(), domain, domain, domain
); | 105 domain, domain, domain); |
| 104 builder->fsCodeAppend("\tfloat blend = step(1.0, max(x, y));\n")
; | 106 builder->fsCodeAppend("\tfloat blend = step(1.0, max(x, y));\n")
; |
| 105 builder->fsCodeAppendf("\t%s = mix(inside, outside, blend);\n",
outColor); | 107 builder->fsCodeAppendf("\t%s = mix(inside, outside, blend);\n",
outColor); |
| 106 } else { | 108 } else { |
| 107 builder->fsCodeAppend("\tbvec4 outside;\n"); | 109 builder->fsCodeAppend("\tbvec4 outside;\n"); |
| 108 builder->fsCodeAppendf("\toutside.xy = lessThan(%s, %s.xy);\n",
inCoords.c_str(), | 110 builder->fsCodeAppendf("\toutside.xy = lessThan(%s, %s.xy);\n",
inCoords.c_str(), |
| 109 domain); | 111 domain); |
| 110 builder->fsCodeAppendf("\toutside.zw = greaterThan(%s, %s.zw);\n
", inCoords.c_str(), | 112 builder->fsCodeAppendf("\toutside.zw = greaterThan(%s, %s.zw);\n
", inCoords.c_str(), |
| 111 domain); | 113 domain); |
| 112 builder->fsCodeAppendf("\t%s = any(outside) ? vec4(0.0, 0.0, 0.0
, 0.0) : ", | 114 builder->fsCodeAppendf("\t%s = any(outside) ? vec4(0.0, 0.0, 0.0
, 0.0) : ", |
| 113 outColor); | 115 outColor); |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 const SkMatrix& matrix = GrEffectUnitTest::TestMatrix(random); | 294 const SkMatrix& matrix = GrEffectUnitTest::TestMatrix(random); |
| 293 bool bilerp = mode != GrTextureDomain::kRepeat_Mode ? random->nextBool() : f
alse; | 295 bool bilerp = mode != GrTextureDomain::kRepeat_Mode ? random->nextBool() : f
alse; |
| 294 GrCoordSet coords = random->nextBool() ? kLocal_GrCoordSet : kPosition_GrCoo
rdSet; | 296 GrCoordSet coords = random->nextBool() ? kLocal_GrCoordSet : kPosition_GrCoo
rdSet; |
| 295 return GrTextureDomainEffect::Create(textures[texIdx], | 297 return GrTextureDomainEffect::Create(textures[texIdx], |
| 296 matrix, | 298 matrix, |
| 297 domain, | 299 domain, |
| 298 mode, | 300 mode, |
| 299 bilerp ? GrTextureParams::kBilerp_Filte
rMode : GrTextureParams::kNone_FilterMode, | 301 bilerp ? GrTextureParams::kBilerp_Filte
rMode : GrTextureParams::kNone_FilterMode, |
| 300 coords); | 302 coords); |
| 301 } | 303 } |
| OLD | NEW |