diff --git a/src/visual/GratingStim.js b/src/visual/GratingStim.js index dcf2c21..88015a0 100644 --- a/src/visual/GratingStim.js +++ b/src/visual/GratingStim.js @@ -40,7 +40,7 @@ import raisedCosShader from "./shaders/raisedCosShader.frag"; * @param {String | HTMLImageElement} [options.mask] - the name of the mask resource or HTMLImageElement corresponding to the mask * @param {String} [options.units= "norm"] - the units of the stimulus (e.g. for size, position, vertices) * @param {number} [options.sf=1.0] - spatial frequency of the function used in grating stimulus - * @param {number} [options.phase=1.0] - phase of the function used in grating stimulus + * @param {number} [options.phase=0.0] - phase of the function used in grating stimulus, multiples of period of that function * @param {Array.} [options.pos= [0, 0]] - the position of the center of the stimulus * @param {number} [options.ori= 0.0] - the orientation (in degrees) * @param {number} [options.size] - the size of the rendered image (DEFAULT_STIM_SIZE_PX will be used if size is not specified) @@ -142,7 +142,8 @@ export class GratingStim extends util.mix(VisualStim).with(ColorMixin) shader: sinShader, uniforms: { uFreq: 1.0, - uPhase: 0.0 + uPhase: 0.0, + uColor: [.5, 0, .5] } }, sqr: { diff --git a/src/visual/shaders/sinShader.frag b/src/visual/shaders/sinShader.frag index 5e53d87..441d2fd 100644 --- a/src/visual/shaders/sinShader.frag +++ b/src/visual/shaders/sinShader.frag @@ -18,9 +18,10 @@ out vec4 shaderOut; #define M_PI 3.14159265358979 uniform float uFreq; uniform float uPhase; +uniform vec3 uColor; void main() { vec2 uv = vUvs; - float s = sin(uFreq * uv.x * 2. * M_PI + uPhase); - shaderOut = vec4(.5 + .5 * vec3(s), 1.0); + float s = sin((uFreq * uv.x + uPhase) * 2. * M_PI); + shaderOut = vec4((.5 + .5 * vec3(s)) * uColor, 1.0); } diff --git a/src/visual/shaders/sinXsinShader.frag b/src/visual/shaders/sinXsinShader.frag index 9b8ffda..21d3975 100644 --- a/src/visual/shaders/sinXsinShader.frag +++ b/src/visual/shaders/sinXsinShader.frag @@ -16,13 +16,14 @@ in vec2 vUvs; out vec4 shaderOut; #define M_PI 3.14159265358979 +#define PI2 2.* M_PI uniform float uFreq; uniform float uPhase; void main() { vec2 uv = vUvs; - float sx = sin(uFreq * uv.x * 2. * M_PI + uPhase); - float sy = sin(uFreq * uv.y * 2. * M_PI + uPhase); + float sx = sin((uFreq * uv.x + uPhase) * PI2); + float sy = sin((uFreq * uv.y + uPhase) * PI2); float s = sx * sy * .5 + .5; shaderOut = vec4(vec3(s), 1.0); } diff --git a/src/visual/shaders/sqrShader.frag b/src/visual/shaders/sqrShader.frag index 1d69602..f44ffca 100644 --- a/src/visual/shaders/sqrShader.frag +++ b/src/visual/shaders/sqrShader.frag @@ -21,6 +21,6 @@ uniform float uPhase; void main() { vec2 uv = vUvs; - float s = sign(sin(uFreq * uv.x * 2. * M_PI + uPhase)); + float s = sign(sin((uFreq * uv.x + uPhase) * 2. * M_PI)); shaderOut = vec4(.5 + .5 * vec3(s), 1.0); } diff --git a/src/visual/shaders/sqrXsqrShader.frag b/src/visual/shaders/sqrXsqrShader.frag index 4f320ab..6f140b4 100644 --- a/src/visual/shaders/sqrXsqrShader.frag +++ b/src/visual/shaders/sqrXsqrShader.frag @@ -16,13 +16,14 @@ in vec2 vUvs; out vec4 shaderOut; #define M_PI 3.14159265358979 +#define PI2 2.* M_PI uniform float uFreq; uniform float uPhase; void main() { vec2 uv = vUvs; - float sx = sign(sin(uFreq * uv.x * 2. * M_PI + uPhase)); - float sy = sign(sin(uFreq * uv.y * 2. * M_PI + uPhase)); + float sx = sign(sin((uFreq * uv.x + uPhase) * PI2)); + float sy = sign(sin((uFreq * uv.y + uPhase) * PI2)); float s = sx * sy * .5 + .5; shaderOut = vec4(vec3(s), 1.0); }