OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 "SkArithmeticMode_gpu.h" | 8 #include "SkArithmeticMode_gpu.h" |
9 | 9 |
10 #if SK_SUPPORT_GPU | 10 #if SK_SUPPORT_GPU |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 const char* outColorSecondary, | 219 const char* outColorSecondary, |
220 const GrXferProcessor& proc) override { | 220 const GrXferProcessor& proc) override { |
221 fKUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visib
ility, | 221 fKUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visib
ility, |
222 kVec4f_GrSLType, kDefault_GrSLPrecisi
on, | 222 kVec4f_GrSLType, kDefault_GrSLPrecisi
on, |
223 "k"); | 223 "k"); |
224 const char* kUni = uniformHandler->getUniformCStr(fKUni); | 224 const char* kUni = uniformHandler->getUniformCStr(fKUni); |
225 | 225 |
226 add_arithmetic_code(fragBuilder, srcColor, dstColor, outColor, kUni, fEn
forcePMColor); | 226 add_arithmetic_code(fragBuilder, srcColor, dstColor, outColor, kUni, fEn
forcePMColor); |
227 | 227 |
228 // Apply coverage. | 228 // Apply coverage. |
229 if (proc.dstReadUsesMixedSamples()) { | 229 INHERITED::DefaultCoverageModulation(fragBuilder, srcCoverage, dstColor,
outColor, |
230 if (srcCoverage) { | 230 outColorSecondary, proc); |
231 fragBuilder->codeAppendf("%s *= %s;", outColor, srcCoverage); | |
232 fragBuilder->codeAppendf("%s = %s;", outColorSecondary, srcCover
age); | |
233 } else { | |
234 fragBuilder->codeAppendf("%s = vec4(1.0);", outColorSecondary); | |
235 } | |
236 } else if (srcCoverage) { | |
237 fragBuilder->codeAppendf("%s = %s * %s + (vec4(1.0) - %s) * %s;", | |
238 outColor, srcCoverage, outColor, srcCoverag
e, dstColor); | |
239 } | |
240 } | 231 } |
241 | 232 |
242 void onSetData(const GrGLSLProgramDataManager& pdman, | 233 void onSetData(const GrGLSLProgramDataManager& pdman, |
243 const GrXferProcessor& processor) override { | 234 const GrXferProcessor& processor) override { |
244 const ArithmeticXP& arith = processor.cast<ArithmeticXP>(); | 235 const ArithmeticXP& arith = processor.cast<ArithmeticXP>(); |
245 pdman.set4f(fKUni, arith.k1(), arith.k2(), arith.k3(), arith.k4()); | 236 pdman.set4f(fKUni, arith.k1(), arith.k2(), arith.k3(), arith.k4()); |
246 fEnforcePMColor = arith.enforcePMColor(); | 237 fEnforcePMColor = arith.enforcePMColor(); |
247 }; | 238 }; |
248 | 239 |
249 GrGLSLProgramDataManager::UniformHandle fKUni; | 240 GrGLSLProgramDataManager::UniformHandle fKUni; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 float k1 = d->fRandom->nextF(); | 303 float k1 = d->fRandom->nextF(); |
313 float k2 = d->fRandom->nextF(); | 304 float k2 = d->fRandom->nextF(); |
314 float k3 = d->fRandom->nextF(); | 305 float k3 = d->fRandom->nextF(); |
315 float k4 = d->fRandom->nextF(); | 306 float k4 = d->fRandom->nextF(); |
316 bool enforcePMColor = d->fRandom->nextBool(); | 307 bool enforcePMColor = d->fRandom->nextBool(); |
317 | 308 |
318 return GrArithmeticXPFactory::Create(k1, k2, k3, k4, enforcePMColor); | 309 return GrArithmeticXPFactory::Create(k1, k2, k3, k4, enforcePMColor); |
319 } | 310 } |
320 | 311 |
321 #endif | 312 #endif |
OLD | NEW |