Skia
2DGraphicsLibrary
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SkPerlinNoiseShader Class Reference

SkPerlinNoiseShader creates an image using the Perlin turbulence function. More...

#include <SkPerlinNoiseShader.h>

Static Public Member Functions

static sk_sp< SkShaderMakeFractalNoise (SkScalar baseFrequencyX, SkScalar baseFrequencyY, int numOctaves, SkScalar seed, const SkISize *tileSize=nullptr)
 This will construct Perlin noise of the given type (Fractal Noise or Turbulence). More...
 
static sk_sp< SkShaderMakeTurbulence (SkScalar baseFrequencyX, SkScalar baseFrequencyY, int numOctaves, SkScalar seed, const SkISize *tileSize=nullptr)
 
static sk_sp< SkShaderMakeImprovedNoise (SkScalar baseFrequencyX, SkScalar baseFrequencyY, int numOctaves, SkScalar z)
 Creates an Improved Perlin Noise shader. More...
 

Detailed Description

SkPerlinNoiseShader creates an image using the Perlin turbulence function.

It can produce tileable noise if asked to stitch tiles and provided a tile size. In order to fill a large area with repeating noise, set the stitchTiles flag to true, and render exactly a single tile of noise. Without this flag, the result will contain visible seams between tiles.

The algorithm used is described here : http://www.w3.org/TR/SVG/filters.html#feTurbulenceElement

Member Function Documentation

static sk_sp<SkShader> SkPerlinNoiseShader::MakeFractalNoise ( SkScalar  baseFrequencyX,
SkScalar  baseFrequencyY,
int  numOctaves,
SkScalar  seed,
const SkISize tileSize = nullptr 
)
static

This will construct Perlin noise of the given type (Fractal Noise or Turbulence).

Both base frequencies (X and Y) have a usual range of (0..1).

The number of octaves provided should be fairly small, although no limit is enforced. Each octave doubles the frequency, so 10 octaves would produce noise from baseFrequency * 1, * 2, * 4, ..., * 512, which quickly yields insignificantly small periods and resembles regular unstructured noise rather than Perlin noise.

If tileSize isn't NULL or an empty size, the tileSize parameter will be used to modify the frequencies so that the noise will be tileable for the given tile size. If tileSize is NULL or an empty size, the frequencies will be used as is without modification.

static sk_sp<SkShader> SkPerlinNoiseShader::MakeImprovedNoise ( SkScalar  baseFrequencyX,
SkScalar  baseFrequencyY,
int  numOctaves,
SkScalar  z 
)
static

Creates an Improved Perlin Noise shader.

The z value is roughly equivalent to the seed of the other two types, but minor variations to z will only slightly change the noise.


The documentation for this class was generated from the following file: