OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "SkPerlinNoiseShader.h" | 8 #include "SkPerlinNoiseShader.h" |
9 #include "SkColorFilter.h" | 9 #include "SkColorFilter.h" |
10 #include "SkReadBuffer.h" | 10 #include "SkReadBuffer.h" |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 | 242 |
243 public: | 243 public: |
244 | 244 |
245 #if SK_SUPPORT_GPU | 245 #if SK_SUPPORT_GPU |
246 const SkBitmap& getPermutationsBitmap() const { return fPermutationsBitmap;
} | 246 const SkBitmap& getPermutationsBitmap() const { return fPermutationsBitmap;
} |
247 | 247 |
248 const SkBitmap& getNoiseBitmap() const { return fNoiseBitmap; } | 248 const SkBitmap& getNoiseBitmap() const { return fNoiseBitmap; } |
249 #endif | 249 #endif |
250 }; | 250 }; |
251 | 251 |
252 SkShader* SkPerlinNoiseShader::CreateFractalNoise(SkScalar baseFrequencyX, SkSca
lar baseFrequencyY, | 252 sk_sp<SkShader> SkPerlinNoiseShader::MakeFractalNoise(SkScalar baseFrequencyX, |
253 int numOctaves, SkScalar seed, | 253 SkScalar baseFrequencyY, |
254 const SkISize* tileSize) { | 254 int numOctaves, SkScalar s
eed, |
255 return new SkPerlinNoiseShader(kFractalNoise_Type, baseFrequencyX, baseFrequ
encyY, numOctaves, | 255 const SkISize* tileSize) { |
256 seed, tileSize); | 256 return sk_sp<SkShader>(new SkPerlinNoiseShader(kFractalNoise_Type, baseFrequ
encyX, |
| 257 baseFrequencyY, numOctaves, |
| 258 seed, tileSize)); |
257 } | 259 } |
258 | 260 |
259 SkShader* SkPerlinNoiseShader::CreateTurbulence(SkScalar baseFrequencyX, SkScala
r baseFrequencyY, | 261 sk_sp<SkShader> SkPerlinNoiseShader::MakeTurbulence(SkScalar baseFrequencyX, |
260 int numOctaves, SkScalar seed, | 262 SkScalar baseFrequencyY, |
261 const SkISize* tileSize) { | 263 int numOctaves, SkScalar see
d, |
262 return new SkPerlinNoiseShader(kTurbulence_Type, baseFrequencyX, baseFrequen
cyY, numOctaves, | 264 const SkISize* tileSize) { |
263 seed, tileSize); | 265 return sk_sp<SkShader>(new SkPerlinNoiseShader(kTurbulence_Type, baseFrequen
cyX, baseFrequencyY, |
| 266 numOctaves, seed, tileSize)); |
264 } | 267 } |
265 | 268 |
266 SkPerlinNoiseShader::SkPerlinNoiseShader(SkPerlinNoiseShader::Type type, | 269 SkPerlinNoiseShader::SkPerlinNoiseShader(SkPerlinNoiseShader::Type type, |
267 SkScalar baseFrequencyX, | 270 SkScalar baseFrequencyX, |
268 SkScalar baseFrequencyY, | 271 SkScalar baseFrequencyY, |
269 int numOctaves, | 272 int numOctaves, |
270 SkScalar seed, | 273 SkScalar seed, |
271 const SkISize* tileSize) | 274 const SkISize* tileSize) |
272 : fType(type) | 275 : fType(type) |
273 , fBaseFrequencyX(baseFrequencyX) | 276 , fBaseFrequencyX(baseFrequencyX) |
(...skipping 14 matching lines...) Expand all Loading... |
288 SkScalar freqX = buffer.readScalar(); | 291 SkScalar freqX = buffer.readScalar(); |
289 SkScalar freqY = buffer.readScalar(); | 292 SkScalar freqY = buffer.readScalar(); |
290 int octaves = buffer.readInt(); | 293 int octaves = buffer.readInt(); |
291 SkScalar seed = buffer.readScalar(); | 294 SkScalar seed = buffer.readScalar(); |
292 SkISize tileSize; | 295 SkISize tileSize; |
293 tileSize.fWidth = buffer.readInt(); | 296 tileSize.fWidth = buffer.readInt(); |
294 tileSize.fHeight = buffer.readInt(); | 297 tileSize.fHeight = buffer.readInt(); |
295 | 298 |
296 switch (type) { | 299 switch (type) { |
297 case kFractalNoise_Type: | 300 case kFractalNoise_Type: |
298 return SkPerlinNoiseShader::CreateFractalNoise(freqX, freqY, octaves
, seed, &tileSize); | 301 return SkPerlinNoiseShader::MakeFractalNoise(freqX, freqY, octaves,
seed, |
| 302 &tileSize).release(); |
299 case kTurbulence_Type: | 303 case kTurbulence_Type: |
300 return SkPerlinNoiseShader::CreateTubulence(freqX, freqY, octaves, s
eed, &tileSize); | 304 return SkPerlinNoiseShader::MakeTurbulence(freqX, freqY, octaves, se
ed, |
| 305 &tileSize).release(); |
301 default: | 306 default: |
302 return nullptr; | 307 return nullptr; |
303 } | 308 } |
304 } | 309 } |
305 | 310 |
306 void SkPerlinNoiseShader::flatten(SkWriteBuffer& buffer) const { | 311 void SkPerlinNoiseShader::flatten(SkWriteBuffer& buffer) const { |
307 buffer.writeInt((int) fType); | 312 buffer.writeInt((int) fType); |
308 buffer.writeScalar(fBaseFrequencyX); | 313 buffer.writeScalar(fBaseFrequencyX); |
309 buffer.writeScalar(fBaseFrequencyY); | 314 buffer.writeScalar(fBaseFrequencyY); |
310 buffer.writeInt(fNumOctaves); | 315 buffer.writeInt(fNumOctaves); |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
573 int numOctaves = d->fRandom->nextRangeU(2, 10); | 578 int numOctaves = d->fRandom->nextRangeU(2, 10); |
574 bool stitchTiles = d->fRandom->nextBool(); | 579 bool stitchTiles = d->fRandom->nextBool(); |
575 SkScalar seed = SkIntToScalar(d->fRandom->nextU()); | 580 SkScalar seed = SkIntToScalar(d->fRandom->nextU()); |
576 SkISize tileSize = SkISize::Make(d->fRandom->nextRangeU(4, 4096), | 581 SkISize tileSize = SkISize::Make(d->fRandom->nextRangeU(4, 4096), |
577 d->fRandom->nextRangeU(4, 4096)); | 582 d->fRandom->nextRangeU(4, 4096)); |
578 SkScalar baseFrequencyX = d->fRandom->nextRangeScalar(0.01f, | 583 SkScalar baseFrequencyX = d->fRandom->nextRangeScalar(0.01f, |
579 0.99f); | 584 0.99f); |
580 SkScalar baseFrequencyY = d->fRandom->nextRangeScalar(0.01f, | 585 SkScalar baseFrequencyY = d->fRandom->nextRangeScalar(0.01f, |
581 0.99f); | 586 0.99f); |
582 | 587 |
583 SkAutoTUnref<SkShader> shader(d->fRandom->nextBool() ? | 588 sk_sp<SkShader> shader(d->fRandom->nextBool() ? |
584 SkPerlinNoiseShader::CreateFractalNoise(baseFrequencyX, baseFrequencyY,
numOctaves, seed, | 589 SkPerlinNoiseShader::MakeFractalNoise(baseFrequencyX, baseFrequencyY, nu
mOctaves, seed, |
585 stitchTiles ? &tileSize : nullpt
r) : | 590 stitchTiles ? &tileSize : nullptr)
: |
586 SkPerlinNoiseShader::CreateTurbulence(baseFrequencyX, baseFrequencyY, nu
mOctaves, seed, | 591 SkPerlinNoiseShader::MakeTurbulence(baseFrequencyX, baseFrequencyY, numO
ctaves, seed, |
587 stitchTiles ? &tileSize : nullptr))
; | 592 stitchTiles ? &tileSize : nullptr)); |
588 | 593 |
589 return shader->asFragmentProcessor(d->fContext, | 594 return shader->asFragmentProcessor(d->fContext, |
590 GrTest::TestMatrix(d->fRandom), nullptr, | 595 GrTest::TestMatrix(d->fRandom), nullptr, |
591 kNone_SkFilterQuality); | 596 kNone_SkFilterQuality); |
592 } | 597 } |
593 | 598 |
594 void GrGLPerlinNoise::emitCode(EmitArgs& args) { | 599 void GrGLPerlinNoise::emitCode(EmitArgs& args) { |
595 const GrPerlinNoiseEffect& pne = args.fFp.cast<GrPerlinNoiseEffect>(); | 600 const GrPerlinNoiseEffect& pne = args.fFp.cast<GrPerlinNoiseEffect>(); |
596 | 601 |
597 GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; | 602 GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
970 str->append(" seed: "); | 975 str->append(" seed: "); |
971 str->appendScalar(fSeed); | 976 str->appendScalar(fSeed); |
972 str->append(" stitch tiles: "); | 977 str->append(" stitch tiles: "); |
973 str->append(fStitchTiles ? "true " : "false "); | 978 str->append(fStitchTiles ? "true " : "false "); |
974 | 979 |
975 this->INHERITED::toString(str); | 980 this->INHERITED::toString(str); |
976 | 981 |
977 str->append(")"); | 982 str->append(")"); |
978 } | 983 } |
979 #endif | 984 #endif |
OLD | NEW |