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 "SkSweepGradient.h" | 8 #include "SkSweepGradient.h" |
9 | 9 |
10 static SkMatrix translate(SkScalar dx, SkScalar dy) { | 10 static SkMatrix translate(SkScalar dx, SkScalar dy) { |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 } | 203 } |
204 | 204 |
205 ///////////////////////////////////////////////////////////////////// | 205 ///////////////////////////////////////////////////////////////////// |
206 | 206 |
207 void GrSweepGradient::GLSLSweepProcessor::emitCode(EmitArgs& args) { | 207 void GrSweepGradient::GLSLSweepProcessor::emitCode(EmitArgs& args) { |
208 const GrSweepGradient& ge = args.fFp.cast<GrSweepGradient>(); | 208 const GrSweepGradient& ge = args.fFp.cast<GrSweepGradient>(); |
209 this->emitUniforms(args.fUniformHandler, ge); | 209 this->emitUniforms(args.fUniformHandler, ge); |
210 SkString coords2D = args.fFragBuilder->ensureCoords2D(args.fTransformedCoord
s[0]); | 210 SkString coords2D = args.fFragBuilder->ensureCoords2D(args.fTransformedCoord
s[0]); |
211 SkString t; | 211 SkString t; |
212 // 0.1591549430918 is 1/(2*pi), used since atan returns values [-pi, pi] | 212 // 0.1591549430918 is 1/(2*pi), used since atan returns values [-pi, pi] |
213 // On Intel GPU there is an issue where it reads the second arguement to ata
n "- %s.x" as an int | 213 t.printf("(atan(- %s.y, - %s.x) * 0.1591549430918 + 0.5)", |
214 // thus must us -1.0 * %s.x to work correctly | 214 coords2D.c_str(), coords2D.c_str()); |
215 if (args.fGLSLCaps->mustForceNegatedAtanParamToFloat()){ | |
216 t.printf("(atan(- %s.y, -1.0 * %s.x) * 0.1591549430918 + 0.5)", | |
217 coords2D.c_str(), coords2D.c_str()); | |
218 } else { | |
219 t.printf("(atan(- %s.y, - %s.x) * 0.1591549430918 + 0.5)", | |
220 coords2D.c_str(), coords2D.c_str()); | |
221 } | |
222 this->emitColor(args.fFragBuilder, | 215 this->emitColor(args.fFragBuilder, |
223 args.fUniformHandler, | 216 args.fUniformHandler, |
224 args.fGLSLCaps, | 217 args.fGLSLCaps, |
225 ge, t.c_str(), | 218 ge, t.c_str(), |
226 args.fOutputColor, | 219 args.fOutputColor, |
227 args.fInputColor, | 220 args.fInputColor, |
228 args.fTexSamplers); | 221 args.fTexSamplers); |
229 } | 222 } |
230 | 223 |
231 ///////////////////////////////////////////////////////////////////// | 224 ///////////////////////////////////////////////////////////////////// |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 str->appendScalar(fCenter.fX); | 256 str->appendScalar(fCenter.fX); |
264 str->append(", "); | 257 str->append(", "); |
265 str->appendScalar(fCenter.fY); | 258 str->appendScalar(fCenter.fY); |
266 str->append(") "); | 259 str->append(") "); |
267 | 260 |
268 this->INHERITED::toString(str); | 261 this->INHERITED::toString(str); |
269 | 262 |
270 str->append(")"); | 263 str->append(")"); |
271 } | 264 } |
272 #endif | 265 #endif |
OLD | NEW |