# JSDoc: Class: GratingStim

# Class: GratingStim

## visual.GratingStim(options)

#### new GratingStim(options)

Grating Stimulus.

##### Parameters:

Name | Type | Description
--- | --- | ---

`options`

Object

###### Properties

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`name` | String |  |  | the name used when logging messages from this stimulus
`win` | Window |  |  | the associated Window
`tex` | String | HTMLImageElement | <optional> | "sin" | the name of the predefined grating texture or image resource or the HTMLImageElement corresponding to the texture
`mask` | String | HTMLImageElement | <optional> |  | the name of the mask resource or HTMLImageElement corresponding to the mask
`units` | String | <optional> | "norm" | the units of the stimulus (e.g. for size, position, vertices)
`sf` | number | <optional> | 1.0 | spatial frequency of the function used in grating stimulus
`phase` | number | <optional> | 0.0 | phase of the function used in grating stimulus, multiples of period of that function
`pos` | Array.<number> | <optional> | [0, 0] | the position of the center of the stimulus
`ori` | number | <optional> | 0.0 | the orientation (in degrees)
`size` | number | <optional> |  | the size of the rendered image (DEFAULT_STIM_SIZE_PX will be used if size is not specified)
`color` | Color | <optional> | "white" | Foreground color of the stimulus. Can be String like "red" or "#ff0000" or Number like 0xff0000.
`opacity` | number | <optional> | 1.0 | Set the opacity of the stimulus. Determines how visible the stimulus is relative to background.
`contrast` | number | <optional> | 1.0 | Set the contrast of the stimulus, i.e. scales how far the stimulus deviates from the middle grey. Ranges [-1, 1].
`depth` | number | <optional> | 0 | the depth (i.e. the z order)
`interpolate` | boolean | <optional> | false | Whether to interpolate (linearly) the texture in the stimulus. Currently supports only image based gratings.
`blendmode` | String | <optional> | "avg" | blend mode of the stimulus, determines how the stimulus is blended with the background. Supported values: "avg", "add", "mul", "screen".
`autoDraw` | boolean | <optional> | false | whether or not the stimulus should be automatically drawn on every frame flip
`autoLog` | boolean | <optional> | false | whether or not to log

Source:
  - visual/GratingStim.js, line 30

### Extends

- VisualStim

### Members

#### (static) DEFAULT_STIM_SIZE_PX :Array

Default size of the Grating Stimuli in pixels.

##### Type:

- Array

Default Value:
  - [256, 256]
Source:
  - visual/GratingStim.js, line 269

#### (static) SHADERS :Object

An object that keeps shaders source code and default uniform values for them. Shader source code is later used for construction of shader programs to create respective visual stimuli.

##### Type:

- Object

##### Properties:

Name | Type | Description
--- | --- | ---

`imageShader`

Object

Renders provided image with applied effects (coloring, phase, frequency).

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for the image based grating stimuli.

`uniforms`

Object

default uniforms for the image based shader.

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uFreq` | float | 1.0 | how much times image repeated within grating stimuli.
`uPhase` | float | 0.0 | offset of the image along X axis.
`uAlpha` | float | 1.0 | value of the alpha channel.

`sin`

Object

Creates 2d sine wave image as if 1d sine graph was extended across Z axis and observed from above. https://en.wikipedia.org/wiki/Sine_wave

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for the sine wave stimuli

`uniforms`

Object

default uniforms for sine wave shader

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uFreq` | float | 1.0 | frequency of sine wave.
`uPhase` | float | 0.0 | phase of sine wave.
`uAlpha` | float | 1.0 | value of the alpha channel.

`sqr`

Object

Creates 2d square wave image as if 1d square graph was extended across Z axis and observed from above. https://en.wikipedia.org/wiki/Square_wave

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for the square wave stimuli

`uniforms`

Object

default uniforms for square wave shader

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uFreq` | float | 1.0 | frequency of square wave.
`uPhase` | float | 0.0 | phase of square wave.
`uAlpha` | float | 1.0 | value of the alpha channel.

`saw`

Object

Creates 2d sawtooth wave image as if 1d sawtooth graph was extended across Z axis and observed from above. https://en.wikipedia.org/wiki/Sawtooth_wave

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for the sawtooth wave stimuli

`uniforms`

Object

default uniforms for sawtooth wave shader

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uFreq` | float | 1.0 | frequency of sawtooth wave.
`uPhase` | float | 0.0 | phase of sawtooth wave.
`uAlpha` | float | 1.0 | value of the alpha channel.

`tri`

Object

Creates 2d triangle wave image as if 1d triangle graph was extended across Z axis and observed from above. https://en.wikipedia.org/wiki/Triangle_wave

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for the triangle wave stimuli

`uniforms`

Object

default uniforms for triangle wave shader

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uFreq` | float | 1.0 | frequency of triangle wave.
`uPhase` | float | 0.0 | phase of triangle wave.
`uPeriod` | float | 1.0 | period of triangle wave.
`uAlpha` | float | 1.0 | value of the alpha channel.

`sinXsin`

Object

Creates an image of two 2d sine waves multiplied with each other. https://en.wikipedia.org/wiki/Sine_wave

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for the two multiplied sine waves stimuli

`uniforms`

Object

default uniforms for shader

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uFreq` | float | 1.0 | frequency of sine wave (both of them).
`uPhase` | float | 0.0 | phase of sine wave (both of them).
`uAlpha` | float | 1.0 | value of the alpha channel.

`sqrXsqr`

Object

Creates an image of two 2d square waves multiplied with each other. https://en.wikipedia.org/wiki/Square_wave

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for the two multiplied sine waves stimuli

`uniforms`

Object

default uniforms for shader

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uFreq` | float | 1.0 | frequency of sine wave (both of them).
`uPhase` | float | 0.0 | phase of sine wave (both of them).
`uAlpha` | float | 1.0 | value of the alpha channel.

`circle`

Object

Creates a filled circle shape with sharp edges.

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for filled circle.

`uniforms`

Object

default uniforms for shader.

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uRadius` | float | 1.0 | Radius of the circle. Ranges [0.0, 1.0], where 0.0 is circle so tiny it results in empty stim and 1.0 is circle that spans from edge to edge of the stim.
`uAlpha` | float | 1.0 | value of the alpha channel.

`gauss`

Object

Creates a 2d Gaussian image as if 1d Gaussian graph was rotated arount Y axis and observed from above. https://en.wikipedia.org/wiki/Gaussian_function

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for Gaussian shader

`uniforms`

Object

default uniforms for shader

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uA` | float | 1.0 | A constant for gaussian formula (see link).
`uB` | float | 0.0 | B constant for gaussian formula (see link).
`uC` | float | 0.16 | C constant for gaussian formula (see link).
`uAlpha` | float | 1.0 | value of the alpha channel.

`cross`

Object

Creates a filled cross shape with sharp edges.

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for cross shader

`uniforms`

Object

default uniforms for shader

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uThickness` | float | 0.2 | Thickness of the cross. Ranges [0.0, 1.0], where 0.0 thickness makes a cross so thin it becomes invisible and results in an empty stim and 1.0 makes it so thick it fills the entire stim.
`uAlpha` | float | 1.0 | value of the alpha channel.

`radRamp`

Object

Creates 2d radial ramp image.

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for radial ramp shader

`uniforms`

Object

default uniforms for shader

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uSqueeze` | float | 1.0 | coefficient that helps to modify size of the ramp. Ranges [0.0, Infinity], where 0.0 results in ramp being so large it fills the entire stim and Infinity makes it so tiny it's invisible.
`uAlpha` | float | 1.0 | value of the alpha channel.

`raisedCos`

Object

Creates 2d raised-cosine image as if 1d raised-cosine graph was rotated around Y axis and observed from above. https://en.wikipedia.org/wiki/Raised-cosine_filter

###### Properties

Name | Type | Description
--- | --- | ---
`shader` | String | shader source code for raised-cosine shader

`uniforms`

Object

default uniforms for shader

###### Properties

Name | Type | Default | Description
--- | --- | --- | ---
`uBeta` | float | 0.25 | roll-off factor (see link).
`uPeriod` | float | 0.625 | reciprocal of the symbol-rate (see link).
`uAlpha` | float | 1.0 | value of the alpha channel.

Source:
  - visual/GratingStim.js, line 59

#### setBlendmode

Set blend mode of the grating stimulus.

Source:
  - visual/GratingStim.js, line 621

#### setColor

Set foreground color value for the grating stimulus.

Source:
  - visual/GratingStim.js, line 575

#### setColorSpace

Set color space value for the grating stimulus.

Source:
  - visual/GratingStim.js, line 556

#### setInterpolate

Whether to interpolate (linearly) the texture in the stimulus.

Source:
  - visual/GratingStim.js, line 644

#### setMask

Setter for the mask attribute.

Source:
  - visual/GratingStim.js, line 402

#### setOpacity

Determines how visible the stimulus is relative to background.

Source:
  - visual/GratingStim.js, line 591

#### setPhase

Set phase value for the function.

Source:
  - visual/GratingStim.js, line 541

#### setSF

Set spatial frequency value for the function.

Source:
  - visual/GratingStim.js, line 606

#### setTex

Setter for the tex attribute.

Source:
  - visual/GratingStim.js, line 338

### Methods

#### (protected) _estimateBoundingBox()

Estimate the bounding box.

Source:
  - visual/GratingStim.js, line 482

#### (protected) _getPixiMeshFromPredefinedShaders(shaderName, uniforms) → {Pixi.Mesh}

Generate PIXI.Mesh object based on provided shader function name and uniforms.

##### Parameters:

Name | Type | Description
--- | --- | ---
`shaderName` | String | name of the shader. Must be one of the SHADERS
`uniforms` | Object | a set of uniforms to supply to the shader. Mixed together with default uniform values.

Source:
  - visual/GratingStim.js, line 506

##### Returns:

Pixi.Mesh object that represents shader and later added to the scene.

Type
  Pixi.Mesh