Shadertoy node

pluginIcon

This documentation is for version 1.0 of Shadertoy (net.sf.openfx.Shadertoy).

Description

Apply a Shadertoy fragment shader.

This plugin implements Shadertoy 0.8.8, but multipass shaders and sound are not supported. Some multipass shaders can still be implemented by chaining several Shadertoy nodes, one for each pass.

Shadertoy 0.8.8 uses WebGL 1.0 (a.k.a. GLSL ES 1.0 from GLES 2.0), based on GLSL 1.20

Note that the more recent Shadertoy 0.9.1 uses WebGL 2.0 (a.k.a. GLSL ES 3.0 from GLES 3.0), based on GLSL 3.3

This help only covers the parts of GLSL ES that are relevant for Shadertoy. For the complete specification please have a look at GLSL ES 1.0 specification or pages 3 and 4 of the OpenGL ES 2.0 quick reference card. See also the Shadertoy/GLSL tutorial.

Image shaders

Image shaders implement the mainImage() function in order to generate the procedural images by computing a color for each pixel. This function is expected to be called once per pixel, and it is responsibility of the host application to provide the right inputs to it and get the output color from it and assign it to the screen pixel. The prototype is:

void mainImage( out vec4 fragColor, in vec2 fragCoord );

where fragCoord contains the pixel coordinates for which the shader needs to compute a color. The coordinates are in pixel units, ranging from 0.5 to resolution-0.5, over the rendering surface, where the resolution is passed to the shader through the iResolution uniform (see below).

The resulting color is gathered in fragColor as a four component vector.

Language:

  • Preprocessor: # #define #undef #if #ifdef #ifndef #else #elif #endif #error #pragma #extension #version #line
  • Operators: () + - ! * / % < > <= >= == != && ||
  • Comments: // /* */
  • Types: void bool int float vec2 vec3 vec4 bvec2 bvec3 bvec4 ivec2 ivec3 ivec4 mat2 mat3 mat4 sampler2D
  • Function Parameter Qualifiers: [STRIKEOUT:none], in, out, inout
  • Global Variable Qualifiers: const
  • Vector Components: .xyzw .rgba .stpq
  • Flow Control: if else for return break continue
  • Output: vec4 fragColor
  • Input: vec2 fragCoord

Built-in Functions (details)

Angle and Trigonometry Functions

  • type radians (type degrees)
  • type degrees (type radians)
  • type sin (type angle)
  • type cos (type angle)
  • type tan (type angle)
  • type asin (type x)
  • type acos (type x)
  • type atan (type y, type x)
  • type atan (type y_over_x)

Exponential Functions

  • type pow (type x, type y)
  • type exp (type x)
  • type log (type x)
  • type exp2 (type x)
  • type log2 (type x)
  • type sqrt (type x)
  • type inversesqrt (type x)

Common Functions

  • type abs (type x)
  • type sign (type x)
  • type floor (type x)
  • type ceil (type x)
  • type fract (type x)
  • type mod (type x, float y)
  • type mod (type x, type y)
  • type min (type x, type y)
  • type min (type x, float y)
  • type max (type x, type y)
  • type max (type x, float y)
  • type clamp (type x, type minV, type maxV)
  • type clamp (type x, float minV, float maxV)
  • type mix (type x, type y, type a)
  • type mix (type x, type y, float a)
  • type step (type edge, type x)
  • type step (float edge, type x)
  • type smoothstep (type a, type b, type x)
  • type smoothstep (float a, float b, type x)

Geometric Functions

  • float length (type x)
  • float distance (type p0, type p1)
  • float dot (type x, type y)
  • vec3 cross (vec3 x, vec3 y)
  • type normalize (type x)
  • type faceforward (type N, type I, type Nref)
  • type reflect (type I, type N)
  • type refract (type I, type N,float eta)

Matrix Functions

  • mat matrixCompMult (mat x, mat y)

Vector Relational Functions

  • bvec lessThan(vec x, vec y)
  • bvec lessThan(ivec x, ivec y)
  • bvec lessThanEqual(vec x, vec y)
  • bvec lessThanEqual(ivec x, ivec y)
  • bvec greaterThan(vec x, vec y)
  • bvec greaterThan(ivec x, ivec y)
  • bvec greaterThanEqual(vec x, vec y)
  • bvec greaterThanEqual(ivec x, ivec y)
  • bvec equal(vec x, vec y)
  • bvec equal(ivec x, ivec y)
  • bvec equal(bvec x, bvec y)
  • bvec notEqual(vec x, vec y)
  • bvec notEqual(ivec x, ivec y)
  • bvec notEqual(bvec x, bvec y)
  • bool any(bvec x)
  • bool all(bvec x)
  • bvec not(bvec x)

Texture Lookup Functions

  • vec4 texture2D(sampler2D sampler, vec2 coord )
  • vec4 texture2D(sampler2D sampler, vec2 coord, float bias)
  • vec4 textureCube(samplerCube sampler, vec3 coord)
  • vec4 texture2DProj(sampler2D sampler, vec3 coord )
  • vec4 texture2DProj(sampler2D sampler, vec3 coord, float bias)
  • vec4 texture2DProj(sampler2D sampler, vec4 coord)
  • vec4 texture2DProj(sampler2D sampler, vec4 coord, float bias)
  • vec4 texture2DLodEXT(sampler2D sampler, vec2 coord, float lod)
  • vec4 texture2DProjLodEXT(sampler2D sampler, vec3 coord, float lod)
  • vec4 texture2DProjLodEXT(sampler2D sampler, vec4 coord, float lod)
  • vec4 textureCubeLodEXT(samplerCube sampler, vec3 coord, float lod)
  • vec4 texture2DGradEXT(sampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy)
  • vec4 texture2DProjGradEXT(sampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy)
  • vec4 texture2DProjGradEXT(sampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy)
  • vec4 textureCubeGradEXT(samplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy)

Function Derivatives

  • type dFdx( type x ), dFdy( type x )
  • type fwidth( type p )

How-to

  • Use structs: struct myDataType { float occlusion; vec3 color; }; myDataType myData = myDataType(0.7, vec3(1.0, 2.0, 3.0));
  • Initialize arrays: arrays cannot be initialized in WebGL.
  • Do conversions: int a = 3; float b = float(a);
  • Do component swizzling: vec4 a = vec4(1.0,2.0,3.0,4.0); vec4 b = a.zyyw;
  • Access matrix components: mat4 m; m[1] = vec4(2.0); m[0][0] = 1.0; m[2][3] = 2.0;

Be careful!

  • the f suffix for floating point numbers: 1.0f is illegal in GLSL. You must use 1.0
  • saturate(): saturate(x) doesn’t exist in GLSL. Use clamp(x,0.0,1.0) instead
  • pow/sqrt: please don’t feed sqrt() and pow() with negative numbers. Add an abs() or max(0.0,) to the argument
  • mod: please don’t do mod(x,0.0). This is undefined in some platforms
  • variables: initialize your variables! Don’t assume they’ll be set to zero by default
  • functions: don’t call your functions the same as some of your variables

Shadertoy Inputs

Type Name Function Description
vec3 iResolution image The viewport resolution (z is pixel aspect ratio, usually 1.0)
float iTime image/sound Current time in seconds
float iTimeDelta image Time it takes to render a frame, in seconds
int iFrame image Current frame
float iFrameRate image Number of frames rendered per second
float iChannelTime[4] image Time for channel (if video or sound), in seconds
vec3 iChannelResolution[4] image/sound Input texture resolution for each channel
vec2 iChannelOffset[4] image Input texture offset in pixel coords for each channel
vec4 iMouse image xy = current pixel coords (if LMB is down). zw = click pixel
sampler2D iChannel{i} image/sound Sampler for input textures i
vec4 iDate image/sound Year, month, day, time in seconds in .xyzw
float iSampleRate image/sound The sound sample rate (typically 44100)
vec2 iRenderScale image The OpenFX render scale (e.g. 0.5,0.5 when rendering half-size) [OFX plugin only]

Shadertoy Outputs

For image shaders, fragColor is used as output channel. It is not, for now, mandatory but recommended to leave the alpha channel to 1.0.

For sound shaders, the mainSound() function returns a vec2 containing the left and right (stereo) sound channel wave data.

OpenFX extensions to Shadertoy

Shadertoy was extended to:

  • Expose shader parameters as uniforms, which are presented as OpenFX parameters.
  • Provide the description and help for these parameters directly in the GLSL code.
  • Add a default uniform containing the render scale. In OpenFX, a render scale of 1 means that the image is rendered at full resolution, 0.5 at half resolution, etc. This can be used to scale parameter values so that the final aspect does not depend on the render scale. For example, a blur size parameter given in pixels at full resolution would have to be multiplied by the render scale.
  • Add a default uniform containing the offset of the processed texture with respect to the position of the origin.

The extensions are:

  • The pre-defined iRenderScale uniform contains the current render scale. Basically all pixel sizes must be multiplied by the renderscale to get a scale-independent effect. For compatibility with Shadertoy, the first line that starts with const vec2 iRenderScale is ignored (the full line should be const vec2 iRenderScale = vec2(1.,1.);).
  • The pre-defined iChannelOffset uniform contains the texture offset for each channel relative to channel 0. For compatibility with Shadertoy, the first line that starts with const vec2 iChannelOffset is ignored (the full line should be const vec2 iChannelOffset[4] = vec2[4]( vec2(0.,0.), vec2(0.,0.), vec2(0.,0.), vec2(0.,0.) );).
  • The shader may define additional uniforms, which should have a default value, as in uniform vec2 blurSize = vec2(5., 5.);. These uniforms can be made available as OpenFX parameters using settings in the ‘Extra parameters’ group, which can be set automatically using the ‘Auto. Params’ button (automatic parameters are only updated if the node is connected to a Viewer). A parameter label and help string can be given in the comment on the same line. The help string must be in parenthesis. uniform vec2 blurSize = vec2(5., 5.); // Blur Size (The blur size in pixels.) min/max values can also be given after a comma. The strings must be exactly min= and max=, without additional spaces, separated by a comma, and the values must have the same dimension as the uniform: uniform vec2 blurSize = vec2(5., 5.); // Blur Size (The blur size in pixels.), min=(0.,0.), max=(1000.,1000.)
  • The following comment line placed in the shader gives a label and help string to input 1 (the comment must be the only thing on the line): // iChannel1: Noise (A noise texture to be used for random number calculations. The texture should not be frame-varying.)
  • This one also sets the filter and wrap parameters: // iChannel0: Source (Source image.), filter=linear, wrap=clamp
  • And this one sets the output bounding box (possible values are Default, Union, Intersection, and iChannel0 to iChannel3): // BBox: iChannel0

Converting a Shadertoy for use in OpenFX

To better understand how to modify a Shadertoy for OpenFX, let use take the simple Gaussian blur example, which is also available as a preset in the Shadertoy node.

In Natron, create a new project, create a Shadertoy node, connect the input 1 of the Viewer to the output of the Shadertoy node. This should give you a blurry color image that corresponds to the default Shadertoy source code. The Shadertoy node should have four inputs, named “iChannel0” to “iChannel3”.

In the Shadertoy node parameters, open the “Image Shader” group. You should see the GLSL source code. Now in the “Load from Preset” choice, select “Blur/Gaussian Blur”. The viewer should display a black image, but you should also notice that the Shadertoy node now has two visible inputs: “Source” and “Modulate” (in Nuke, these inputs are still called iChannel0 and iChannel1). Create a Read node that reads a still image or a video, and connect it to the “Source” input. A blurred version of the image should now appear in the viewer. You should also notice that two parameters appeared at the top of the parameters for the Shadertoy node: “Size” and “Modulate”. Play with the “Size” parameter and see how it affects the blur size (you may have to zoom on the image to see precisely the effect).

Now let us examine the modifications that were brought to the original GLSL code:

These three comment lines describe the label, filter, and wrap parameters for each input, as well as the size of the output bounding box (also called “region of definition”):

// iChannel0: Source, filter=linear, wrap=clamp
// iChannel1: Modulate (Image containing a factor to be applied to the Blur size in the first channel), filter=linear, wrap=clamp
// BBox: iChannel0

Two constant global variables were added, which are ignored by the Shadertoy plugin, so that you can still copy-and-paste the source code in Shadertoy 0.8.8 and it still works (unfortunately, it does not work anymore with later versions of Shadertoy). You can safely ignore these:

const vec2 iRenderScale = vec2(1.,1.);
const vec2 iChannelOffset[4] = vec2[4]( vec2(0.,0.), vec2(0.,0.), vec2(0.,0.), vec2(0.,0.) );

Then the uniform section gives the list of what will appear as OpenFX parameters, together with their default value, label, help string, and default range. Note that in the original Shadertoy code, the blur size was a constant hidden inside the code. Finding out the parameters of a Shadertoy requires precise code inspection. If you modify this part of the code, pressing the “Auto. Params” button will apply these changes to the OpenFX parameters:

uniform float size = 10.; // Size (Size of the filter kernel in pixel units. The standard deviation of the corresponding Gaussian is size/2.4.), min=0., max=21.
uniform bool perpixel_size = false; // Modulate (Modulate the blur size by multiplying it by the first channel of the Modulate input)

In the mainImage function, which does the processing, we compute the mSize and kSize variables, which are the kernel size and mask size for that particular algorithm, from the “Size” parameter, multiplied by the render scale to get a scale-invariant effect. If the “Modulate” check box is on, we also multiply the size by the value found in the first channel (which is red, not alpha) of the “Modulate” input, which is in the iChannel1 texture according to the comments at the beginning of the source code. This can be use to modulate the blur size depending on the position in the image. The “Modulate” input may be for example connected to the output of a Roto node (with the “R” checkbox checked in the Roto node). Since the Roto output may not have the same size and origin as the Source image, we take care of these by using the iChannelOffset and iChannelResolution values for input 1.

float fSize = size * iRenderScale.x;
if (perpixel_size) {
  fSize *= texture2D(iChannel1, (fragCoord.xy-iChannelOffset[1].xy)/iChannelResolution[1].xy).x;
}
int kSize = int(min(int((fSize-1)/2), KSIZE_MAX));
int mSize = kSize*2+1;

In the rest of the code, the only difference is that the blur size is not constant and equal to 7, but comes from the fSize variable:

float sigma = fSize / 2.4;

Issues with Gamma correction

OpenGL processing supposes all textures are linear, i.e. not gamma-compressed. This for example about bilinear interpolation on textures: this only works if the intensities are represented linearly. So a proper OpenGL rendering pipe should in principle:

  1. Convert all textures to a linear representation (many 8-bit textures are gamma-compressed)
  2. Render with OpenGL
  3. Gamma-compress the linear framebuffer for display

When processing floating-point buffers in OpenFX, the color representation is usually linear, which means that the OpenFX host usually performs steps 1 and 3 anyway (that includes Natron and Nuke): the images given to an OpenFX plugins are in linear color space, and their output is also supposed to be linear.

However, many OpenGL applications, including Shadertoy and most games, skip steps 1 and 3 (mainly for performance issue): they process gamma-compressed textures as if they were linear, and sometimes have to boost their output by gamma compression so that it looks nice on a standard display (which usually accepts a sRGB-compressed framebuffer).

This is why many shaders from Shadertoy convert their output from linear to sRGB or gamma=2.2, see for example the srgb2lin and lin2srgb functions in https://www.shadertoy.com/view/XsfXzf . These conversions must be removed when using the shader in OpenFX.

An alternative solution would be to convert all Shadertoy inputs from linear to sRGB, and convert back all outputs to linear, either inside the Shadertoy node, or using external conversion nodes (such as OCIOColorSpace). But this is a bad option, because this adds useless processing. Removing the srgb2lin and lin2srgb conversions from the shader source is a much better option (these functions may have different names, or there may simply be operations line pow(c,vec3(2.2)) and/or pow(c,vec3(1./2.2)) in the GLSL code).

As an example, take a look at the changes made to the Barrel Blur Chroma Shadertoy: the OpenFX version is available as a preset in the Shadertoy node as “Effects/Barrel Blur Chroma”. When it was converted to OpenFX, all gamma compression and decompression operations were identified and removed.

Multipass shaders

Most multipass shaders (those using BufA, BufB, BufC, or BufD) can be implemented using the Shadertoy plugin.

The shader sources for two sample multipass shadertoys are available as Natron PyPlugs (but the shader sources are also available separately next to the PyPlugs if you want to use these in another OpenFX host:

The principle is very simple: since multipass cannot be done using a single Shadertoy, use several Shadertoy nodes, route the textures between them, and link the parameters. You can learn from these two examples. To figure out the route between textures, click on the tab for each shader in shadertoy.com, and check which shader output is connected to the input textures (iChannel0, etc.) for this shader. The connections between nodes should follow these rules.

The only multipass effects that can not be implemented are the shaders that read back the content of a buffer to compute that same buffer, because compositing graphs cannot have loops (the execution of such a graph would cause an infinite recursion). One example is this progressive lightmap render, where BufB from the previous render is read back as iChannel1 in the BufB shader.

Default textures and videos

The default shadertoy textures and videos are available from the Shadertoy web site. In order to mimic the behavior of each shader, download the corresponding textures or videos and connect them to the proper input.

Inputs

Input Description Optional
iChannel0   Yes
iChannel1   Yes
iChannel2   Yes
iChannel3   Yes

Controls

Parameter / script name Type Default Function
Mouse Pos. / mousePosition Double x: 0 y: 0 Mouse position, in pixels. Gets mapped to the xy components of the iMouse input. Note that in the web version of Shadertoy, the y coordinate goes from 1 to height.
Click Pos. / mouseClick Double x: 1 y: 1 Mouse click position, in pixels. The zw components of the iMouse input contain mouseClick if mousePressed is checked, else -mouseClick. The default is (1.,1.)
Mouse Pressed / mousePressed Boolean Off When checked, the zw components of the iMouse input contain mouseClick, else they contain -mouseClick. If the host does not support animating this parameter, use negative values for mouseClick to emulate a released mouse button.
Value0 / paramValueBool0 Boolean Off Value of the parameter.
Value0 / paramValueInt0 Integer 0 Value of the parameter.
Value0 / paramValueFloat0 Double 0 Value of the parameter.
Value0 / paramValueVec20 Double x: 0 y: 0 Value of the parameter.
Value0 / paramValueVec30 Color r: 0 g: 0 b: 0 Value of the parameter.
Value0 / paramValueVec40 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value1 / paramValueBool1 Boolean Off Value of the parameter.
Value1 / paramValueInt1 Integer 0 Value of the parameter.
Value1 / paramValueFloat1 Double 0 Value of the parameter.
Value1 / paramValueVec21 Double x: 0 y: 0 Value of the parameter.
Value1 / paramValueVec31 Color r: 0 g: 0 b: 0 Value of the parameter.
Value1 / paramValueVec41 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value2 / paramValueBool2 Boolean Off Value of the parameter.
Value2 / paramValueInt2 Integer 0 Value of the parameter.
Value2 / paramValueFloat2 Double 0 Value of the parameter.
Value2 / paramValueVec22 Double x: 0 y: 0 Value of the parameter.
Value2 / paramValueVec32 Color r: 0 g: 0 b: 0 Value of the parameter.
Value2 / paramValueVec42 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value3 / paramValueBool3 Boolean Off Value of the parameter.
Value3 / paramValueInt3 Integer 0 Value of the parameter.
Value3 / paramValueFloat3 Double 0 Value of the parameter.
Value3 / paramValueVec23 Double x: 0 y: 0 Value of the parameter.
Value3 / paramValueVec33 Color r: 0 g: 0 b: 0 Value of the parameter.
Value3 / paramValueVec43 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value4 / paramValueBool4 Boolean Off Value of the parameter.
Value4 / paramValueInt4 Integer 0 Value of the parameter.
Value4 / paramValueFloat4 Double 0 Value of the parameter.
Value4 / paramValueVec24 Double x: 0 y: 0 Value of the parameter.
Value4 / paramValueVec34 Color r: 0 g: 0 b: 0 Value of the parameter.
Value4 / paramValueVec44 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value5 / paramValueBool5 Boolean Off Value of the parameter.
Value5 / paramValueInt5 Integer 0 Value of the parameter.
Value5 / paramValueFloat5 Double 0 Value of the parameter.
Value5 / paramValueVec25 Double x: 0 y: 0 Value of the parameter.
Value5 / paramValueVec35 Color r: 0 g: 0 b: 0 Value of the parameter.
Value5 / paramValueVec45 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value6 / paramValueBool6 Boolean Off Value of the parameter.
Value6 / paramValueInt6 Integer 0 Value of the parameter.
Value6 / paramValueFloat6 Double 0 Value of the parameter.
Value6 / paramValueVec26 Double x: 0 y: 0 Value of the parameter.
Value6 / paramValueVec36 Color r: 0 g: 0 b: 0 Value of the parameter.
Value6 / paramValueVec46 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value7 / paramValueBool7 Boolean Off Value of the parameter.
Value7 / paramValueInt7 Integer 0 Value of the parameter.
Value7 / paramValueFloat7 Double 0 Value of the parameter.
Value7 / paramValueVec27 Double x: 0 y: 0 Value of the parameter.
Value7 / paramValueVec37 Color r: 0 g: 0 b: 0 Value of the parameter.
Value7 / paramValueVec47 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value8 / paramValueBool8 Boolean Off Value of the parameter.
Value8 / paramValueInt8 Integer 0 Value of the parameter.
Value8 / paramValueFloat8 Double 0 Value of the parameter.
Value8 / paramValueVec28 Double x: 0 y: 0 Value of the parameter.
Value8 / paramValueVec38 Color r: 0 g: 0 b: 0 Value of the parameter.
Value8 / paramValueVec48 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value9 / paramValueBool9 Boolean Off Value of the parameter.
Value9 / paramValueInt9 Integer 0 Value of the parameter.
Value9 / paramValueFloat9 Double 0 Value of the parameter.
Value9 / paramValueVec29 Double x: 0 y: 0 Value of the parameter.
Value9 / paramValueVec39 Color r: 0 g: 0 b: 0 Value of the parameter.
Value9 / paramValueVec49 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value10 / paramValueBool10 Boolean Off Value of the parameter.
Value10 / paramValueInt10 Integer 0 Value of the parameter.
Value10 / paramValueFloat10 Double 0 Value of the parameter.
Value10 / paramValueVec210 Double x: 0 y: 0 Value of the parameter.
Value10 / paramValueVec310 Color r: 0 g: 0 b: 0 Value of the parameter.
Value10 / paramValueVec410 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value11 / paramValueBool11 Boolean Off Value of the parameter.
Value11 / paramValueInt11 Integer 0 Value of the parameter.
Value11 / paramValueFloat11 Double 0 Value of the parameter.
Value11 / paramValueVec211 Double x: 0 y: 0 Value of the parameter.
Value11 / paramValueVec311 Color r: 0 g: 0 b: 0 Value of the parameter.
Value11 / paramValueVec411 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value12 / paramValueBool12 Boolean Off Value of the parameter.
Value12 / paramValueInt12 Integer 0 Value of the parameter.
Value12 / paramValueFloat12 Double 0 Value of the parameter.
Value12 / paramValueVec212 Double x: 0 y: 0 Value of the parameter.
Value12 / paramValueVec312 Color r: 0 g: 0 b: 0 Value of the parameter.
Value12 / paramValueVec412 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value13 / paramValueBool13 Boolean Off Value of the parameter.
Value13 / paramValueInt13 Integer 0 Value of the parameter.
Value13 / paramValueFloat13 Double 0 Value of the parameter.
Value13 / paramValueVec213 Double x: 0 y: 0 Value of the parameter.
Value13 / paramValueVec313 Color r: 0 g: 0 b: 0 Value of the parameter.
Value13 / paramValueVec413 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value14 / paramValueBool14 Boolean Off Value of the parameter.
Value14 / paramValueInt14 Integer 0 Value of the parameter.
Value14 / paramValueFloat14 Double 0 Value of the parameter.
Value14 / paramValueVec214 Double x: 0 y: 0 Value of the parameter.
Value14 / paramValueVec314 Color r: 0 g: 0 b: 0 Value of the parameter.
Value14 / paramValueVec414 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value15 / paramValueBool15 Boolean Off Value of the parameter.
Value15 / paramValueInt15 Integer 0 Value of the parameter.
Value15 / paramValueFloat15 Double 0 Value of the parameter.
Value15 / paramValueVec215 Double x: 0 y: 0 Value of the parameter.
Value15 / paramValueVec315 Color r: 0 g: 0 b: 0 Value of the parameter.
Value15 / paramValueVec415 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value16 / paramValueBool16 Boolean Off Value of the parameter.
Value16 / paramValueInt16 Integer 0 Value of the parameter.
Value16 / paramValueFloat16 Double 0 Value of the parameter.
Value16 / paramValueVec216 Double x: 0 y: 0 Value of the parameter.
Value16 / paramValueVec316 Color r: 0 g: 0 b: 0 Value of the parameter.
Value16 / paramValueVec416 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value17 / paramValueBool17 Boolean Off Value of the parameter.
Value17 / paramValueInt17 Integer 0 Value of the parameter.
Value17 / paramValueFloat17 Double 0 Value of the parameter.
Value17 / paramValueVec217 Double x: 0 y: 0 Value of the parameter.
Value17 / paramValueVec317 Color r: 0 g: 0 b: 0 Value of the parameter.
Value17 / paramValueVec417 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value18 / paramValueBool18 Boolean Off Value of the parameter.
Value18 / paramValueInt18 Integer 0 Value of the parameter.
Value18 / paramValueFloat18 Double 0 Value of the parameter.
Value18 / paramValueVec218 Double x: 0 y: 0 Value of the parameter.
Value18 / paramValueVec318 Color r: 0 g: 0 b: 0 Value of the parameter.
Value18 / paramValueVec418 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Value19 / paramValueBool19 Boolean Off Value of the parameter.
Value19 / paramValueInt19 Integer 0 Value of the parameter.
Value19 / paramValueFloat19 Double 0 Value of the parameter.
Value19 / paramValueVec219 Double x: 0 y: 0 Value of the parameter.
Value19 / paramValueVec319 Color r: 0 g: 0 b: 0 Value of the parameter.
Value19 / paramValueVec419 Color r: 0 g: 0 b: 0 a: 0 Value of the parameter.
Load from File / imageShaderFileName N/A   Load the source from the given file. The file contents is only loaded once. Press the “Reload” button to load again the same file.
Reload / imageShaderReload Button   Reload the source from the given file.
Presets Directory / imageShaderPresetDir N/A   The directory where presets are located. There must be a “Shadertoy.txt” file in this directory to give the list of presets (see the default presets directory for an example). The default textures are located in “/Applications/Natron.app/Contents/Plugins/OFX/Natron/Shadertoy.ofx.bundle/Contents/Resources/presets”.
Load from Preset / imageShaderPreset Choice No preset
Load the source from the preset. The default textures are located in “/Applications/Natron.app/Contents/Plugins/OFX/Natron/Shadertoy.ofx.bundle/Contents/Resources/presets”, and more presets can be added by editing “Shadertoy.txt” in the Presets Directory.
No preset
Blur/Bilateral
Blur/Bloom
Blur/Bokeh Disc
Blur/Circular Blur
Blur/Fast Blur
Blur/Gaussian Blur
Blur/HDR Bloom
Blur/Mipmap Blur
Blur/Monte-Carlo Blur
Blur/Poisson Disc
Blur/Simple Radial Blur
Effect/Anaglyphic
Effect/Ball
Effect/Barrel Blur Chroma
Effect/Bloom Paint
Effect/C64
Effect/Chromatic Aberration
Effect/CMYK Halftone
Effect/CRT
Effect/DawnBringer 4bit
Effect/Film Grain
Effect/Fisheye
Effect/Glitch 01
Effect/Glitch 02
Effect/Glitch A
Effect/Glitch B
Effect/Image Cel Shade
Effect/Kaleidoscope
Effect/Median Filter
Effect/Money Filter
Effect/Noisy Distortion
Effect/Old Video
Effect/Quad Mirror
Effect/Postprocessing
Effect/Q*Bert-ify
Effect/Sharpen
Effect/Stripes
Effect/TV Snow
Effect/Van Gogh
Effect/Vignette
Merge/MergeOver
Merge/MergePlus
Merge/MergeMatte
Merge/MergeMultiply
Merge/MergeIn
Merge/MergeOut
Merge/MergeMax
Merge/MergeMin
Merge/MergeAbsminus
Merge/MergeScreen
Noise Blur
Notebook Drawings
Plasma2
Source/Bleepy Blocks
Source/Bubbles
Source/Cellular
Source/Cloud
Source/Cloudy Sky
Source/Color Grid
Source/Coloured Circles
Source/Deform Flower
Source/Disks
Source/Dot Dot Dot
Source/Fireball
Source/Fireball2
Source/Flaring
Source/Flash
Source/Fractal/Basic Fractal
Source/Fractal/Fractal Tiling
Source/Fractal/Juliasm
Source/Fractal/Julia Bulb
Source/Fractal/Julia Trap
Source/Fractal/Mandelbrot Distance
Source/Fractal/Mandelbrot Orbit Trap
Source/Glowing Thing
Source/Infinite Fall
Source/Input Time
Source/Interstellar
Source/Interweaving Sine bands
Source/Iterations/Guts
Source/Iterations/Inversion
Source/Iterations/Shiny
Source/Iterations/Trigonometric
Source/Iterations/Worms
Source/Lens Flare
Source/Noise
Source/Noise Animation Electric
Source/Noise Animation Lava
Source/Noise Animation Watery
Source/Plasma Triangle
Source/Seascape
Source/Silexars Creation
Source/Simple Fire
Source/Sky at Night
Source/Spiral
Source/Star Nest
Source/Venus
Source/Voronoi
Source/Warping/Procedural 1
Source/Warping/Procedural 2
Source/Warping/Procedural 3
Source/Warping/Procedural 4
Source/Water Caustic
Source/Worley Noise Waters
Star Tunnel
Warping/Warp
Warping/Texture
Source / imageShaderSource String
// iChannel0: Source (Source image.), filter=linear, wrap=clamp
// BBox: iChannel0

const vec2 iRenderScale = vec2(1.,1.); // Render Scale (The size of a full-resolution pixel).
uniform float amplitude = 0.5; // Amplitude (The amplitude of the xy sine wave), min=0., max=1.
uniform float size = 50.; // Size (The period of the xy sine wave), min = 0., max = 200.

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord.xy / iResolution.xy;
vec3 sinetex = vec3(0.5+0.5*amplitude*sin(fragCoord.x/(size*iRenderScale.x)),
0.5+0.5*amplitude*sin(fragCoord.y/(size*iRenderScale.y)),
0.5+0.5*sin(iTime));
fragColor = vec4(amplitude*sinetex + (1 - amplitude)*texture2D( iChannel0, uv ).xyz,1.0);
}
Image shader.

Shader Inputs:
uniform vec3 iResolution; // viewport resolution (in pixels)
uniform float iTime; // shader playback time (in seconds)
uniform float iTimeDelta; // render time (in seconds)
uniform int iFrame; // shader playback frame
uniform float iChannelTime[4]; // channel playback time (in seconds)
uniform vec3 iChannelResolution[4]; // channel resolution (in pixels)
uniform vec2 iChannelOffset[4]; // channel texture offset relative to iChannel0 (in pixels)
uniform vec4 iMouse; // mouse pixel coords. xy: current (if MLB down), zw: click
uniform samplerXX iChannel0..3; // input channel. XX = 2D/Cube
uniform vec4 iDate; // (year, month, day, time in seconds)
uniform float iSampleRate; // sound sample rate (i.e., 44100)
Compile / imageShaderCompile Button   Compile the image shader.
Auto. Params / autoParams Button   Automatically set the parameters from the shader source next time image is rendered. May require clicking twice, depending on the OpenFX host. Also reset these parameters to their default value.
Reset Params Values / resetParams Button   Set all the extra parameters to their default values, as set automatically by the “Auto. Params”, or in the “Extra Parameters” group.
Enable / inputEnable0 Boolean On Enable this input.
Filter / mipmap0 Choice Mipmap
Texture filter for this input.
Nearest (nearest): MIN/MAG = GL_NEAREST/GL_NEAREST
Linear (linear): MIN/MAG = GL_LINEAR/GL_LINEAR
Mipmap (mipmap): MIN/MAG = GL_LINEAR_MIPMAP_LINEAR/GL_LINEAR
Anisotropic (anisotropic): Mipmap with anisotropic filtering. Available with GPU if supported (check for the presence of the GL_EXT_texture_filter_anisotropic extension in the Renderer Info) and with “softpipe” CPU driver.
Wrap / wrap0 Choice Repeat
Texture wrap parameter for this input.
Repeat (repeat): WRAP_S/T = GL_REPEAT
Clamp (clamp): WRAP_S/T = GL_CLAMP_TO_EDGE
Mirror (mirror): WRAP_S/T = GL_MIRRORED_REPEAT
Label / inputLabel0 String   Label for this input in the user interface.
Hint / inputHint0 String    
Enable / inputEnable1 Boolean On Enable this input.
Filter / mipmap1 Choice Mipmap
Texture filter for this input.
Nearest (nearest): MIN/MAG = GL_NEAREST/GL_NEAREST
Linear (linear): MIN/MAG = GL_LINEAR/GL_LINEAR
Mipmap (mipmap): MIN/MAG = GL_LINEAR_MIPMAP_LINEAR/GL_LINEAR
Anisotropic (anisotropic): Mipmap with anisotropic filtering. Available with GPU if supported (check for the presence of the GL_EXT_texture_filter_anisotropic extension in the Renderer Info) and with “softpipe” CPU driver.
Wrap / wrap1 Choice Repeat
Texture wrap parameter for this input.
Repeat (repeat): WRAP_S/T = GL_REPEAT
Clamp (clamp): WRAP_S/T = GL_CLAMP_TO_EDGE
Mirror (mirror): WRAP_S/T = GL_MIRRORED_REPEAT
Label / inputLabel1 String   Label for this input in the user interface.
Hint / inputHint1 String    
Enable / inputEnable2 Boolean On Enable this input.
Filter / mipmap2 Choice Mipmap
Texture filter for this input.
Nearest (nearest): MIN/MAG = GL_NEAREST/GL_NEAREST
Linear (linear): MIN/MAG = GL_LINEAR/GL_LINEAR
Mipmap (mipmap): MIN/MAG = GL_LINEAR_MIPMAP_LINEAR/GL_LINEAR
Anisotropic (anisotropic): Mipmap with anisotropic filtering. Available with GPU if supported (check for the presence of the GL_EXT_texture_filter_anisotropic extension in the Renderer Info) and with “softpipe” CPU driver.
Wrap / wrap2 Choice Repeat
Texture wrap parameter for this input.
Repeat (repeat): WRAP_S/T = GL_REPEAT
Clamp (clamp): WRAP_S/T = GL_CLAMP_TO_EDGE
Mirror (mirror): WRAP_S/T = GL_MIRRORED_REPEAT
Label / inputLabel2 String   Label for this input in the user interface.
Hint / inputHint2 String    
Enable / inputEnable3 Boolean On Enable this input.
Filter / mipmap3 Choice Mipmap
Texture filter for this input.
Nearest (nearest): MIN/MAG = GL_NEAREST/GL_NEAREST
Linear (linear): MIN/MAG = GL_LINEAR/GL_LINEAR
Mipmap (mipmap): MIN/MAG = GL_LINEAR_MIPMAP_LINEAR/GL_LINEAR
Anisotropic (anisotropic): Mipmap with anisotropic filtering. Available with GPU if supported (check for the presence of the GL_EXT_texture_filter_anisotropic extension in the Renderer Info) and with “softpipe” CPU driver.
Wrap / wrap3 Choice Repeat
Texture wrap parameter for this input.
Repeat (repeat): WRAP_S/T = GL_REPEAT
Clamp (clamp): WRAP_S/T = GL_CLAMP_TO_EDGE
Mirror (mirror): WRAP_S/T = GL_MIRRORED_REPEAT
Label / inputLabel3 String   Label for this input in the user interface.
Hint / inputHint3 String    
Output Bounding Box / bbox Choice Default
What to use to produce the output image’s bounding box. If no selected input is connected, use the project size.
Default (default): Default bounding box (project size).
Format (format): Use a pre-defined image format.
Union (union): Union of all connected inputs.
Intersect (intersection): Intersection of all connected inputs.
iChannel0: Bounding box of iChannel0.
iChannel1: Bounding box of iChannel1.
iChannel2: Bounding box of iChannel2.
iChannel3: Bounding box of iChannel3.
Format / NatronParamFormatChoice Choice HD 1920x1080
The output format.
PC_Video 640x480 (PC_Video)
NTSC 720x486 0.91 (NTSC)
PAL 720x576 1.09 (PAL)
NTSC_16:9 720x486 1.21 (NTSC_16:9)
PAL_16:9 720x576 1.46 (PAL_16:9)
HD_720 1280x720 (HD_720)
HD 1920x1080 (HD)
UHD_4K 3840x2160 (UHD_4K)
1K_Super_35(full-ap) 1024x778 (1K_Super_35(full-ap))
1K_Cinemascope 914x778 2.00 (1K_Cinemascope)
2K_Super_35(full-ap) 2048x1556 (2K_Super_35(full-ap))
2K_Cinemascope 1828x1556 2.00 (2K_Cinemascope)
2K_DCP 2048x1080 (2K_DCP)
4K_Super_35(full-ap) 4096x3112 (4K_Super_35(full-ap))
4K_Cinemascope 3656x3112 2.00 (4K_Cinemascope)
4K_DCP 4096x2160 (4K_DCP)
square_256 256x256 (square_256)
square_512 512x512 (square_512)
square_1K 1024x1024 (square_1K)
square_2K 2048x2048 (square_2K)
Mouse Params. / mouseParams Boolean On Enable mouse parameters.
Start Date / startDate Color y: 1970 m: 0 d: 1 s: 0 The date (yyyy,mm,dd,s) corresponding to frame 0. The month starts at 0 for january, the day starts at 1, and the seconds start from 0 at midnight and should be at most 24*60*60=86400. December 28, 1895 at 10:30 would thus the be (1895,11,28,37800).
No. of Params / paramCount Integer 0 Number of extra parameters.
Type / paramType0 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName0 String   Name of the parameter, as used in the shader.
Label / paramLabel0 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint0 String   Help for the parameter.
Default0 / paramDefaultBool0 Boolean Off Default value of the parameter.
Default0 / paramDefaultInt0 Integer 0 Default value of the parameter.
Min0 / paramMinInt0 Integer -2147483648 Min value of the parameter.
Max0 / paramMaxInt0 Integer 2147483647 Max value of the parameter.
Default0 / paramDefaultFloat0 Double 0 Default value of the parameter.
Min0 / paramMinFloat0 Double -1.79769e+308 Min value of the parameter.
Max0 / paramMaxFloat0 Double 1.79769e+308 Max value of the parameter.
Default0 / paramDefaultVec20 Double x: 0 y: 0 Default value of the parameter.
Min0 / paramMinVec20 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max0 / paramMaxVec20 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default0 / paramDefaultVec30 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default0 / paramDefaultVec40 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType1 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName1 String   Name of the parameter, as used in the shader.
Label / paramLabel1 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint1 String   Help for the parameter.
Default1 / paramDefaultBool1 Boolean Off Default value of the parameter.
Default1 / paramDefaultInt1 Integer 0 Default value of the parameter.
Min1 / paramMinInt1 Integer -2147483648 Min value of the parameter.
Max1 / paramMaxInt1 Integer 2147483647 Max value of the parameter.
Default1 / paramDefaultFloat1 Double 0 Default value of the parameter.
Min1 / paramMinFloat1 Double -1.79769e+308 Min value of the parameter.
Max1 / paramMaxFloat1 Double 1.79769e+308 Max value of the parameter.
Default1 / paramDefaultVec21 Double x: 0 y: 0 Default value of the parameter.
Min1 / paramMinVec21 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max1 / paramMaxVec21 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default1 / paramDefaultVec31 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default1 / paramDefaultVec41 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType2 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName2 String   Name of the parameter, as used in the shader.
Label / paramLabel2 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint2 String   Help for the parameter.
Default2 / paramDefaultBool2 Boolean Off Default value of the parameter.
Default2 / paramDefaultInt2 Integer 0 Default value of the parameter.
Min2 / paramMinInt2 Integer -2147483648 Min value of the parameter.
Max2 / paramMaxInt2 Integer 2147483647 Max value of the parameter.
Default2 / paramDefaultFloat2 Double 0 Default value of the parameter.
Min2 / paramMinFloat2 Double -1.79769e+308 Min value of the parameter.
Max2 / paramMaxFloat2 Double 1.79769e+308 Max value of the parameter.
Default2 / paramDefaultVec22 Double x: 0 y: 0 Default value of the parameter.
Min2 / paramMinVec22 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max2 / paramMaxVec22 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default2 / paramDefaultVec32 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default2 / paramDefaultVec42 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType3 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName3 String   Name of the parameter, as used in the shader.
Label / paramLabel3 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint3 String   Help for the parameter.
Default3 / paramDefaultBool3 Boolean Off Default value of the parameter.
Default3 / paramDefaultInt3 Integer 0 Default value of the parameter.
Min3 / paramMinInt3 Integer -2147483648 Min value of the parameter.
Max3 / paramMaxInt3 Integer 2147483647 Max value of the parameter.
Default3 / paramDefaultFloat3 Double 0 Default value of the parameter.
Min3 / paramMinFloat3 Double -1.79769e+308 Min value of the parameter.
Max3 / paramMaxFloat3 Double 1.79769e+308 Max value of the parameter.
Default3 / paramDefaultVec23 Double x: 0 y: 0 Default value of the parameter.
Min3 / paramMinVec23 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max3 / paramMaxVec23 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default3 / paramDefaultVec33 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default3 / paramDefaultVec43 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType4 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName4 String   Name of the parameter, as used in the shader.
Label / paramLabel4 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint4 String   Help for the parameter.
Default4 / paramDefaultBool4 Boolean Off Default value of the parameter.
Default4 / paramDefaultInt4 Integer 0 Default value of the parameter.
Min4 / paramMinInt4 Integer -2147483648 Min value of the parameter.
Max4 / paramMaxInt4 Integer 2147483647 Max value of the parameter.
Default4 / paramDefaultFloat4 Double 0 Default value of the parameter.
Min4 / paramMinFloat4 Double -1.79769e+308 Min value of the parameter.
Max4 / paramMaxFloat4 Double 1.79769e+308 Max value of the parameter.
Default4 / paramDefaultVec24 Double x: 0 y: 0 Default value of the parameter.
Min4 / paramMinVec24 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max4 / paramMaxVec24 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default4 / paramDefaultVec34 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default4 / paramDefaultVec44 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType5 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName5 String   Name of the parameter, as used in the shader.
Label / paramLabel5 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint5 String   Help for the parameter.
Default5 / paramDefaultBool5 Boolean Off Default value of the parameter.
Default5 / paramDefaultInt5 Integer 0 Default value of the parameter.
Min5 / paramMinInt5 Integer -2147483648 Min value of the parameter.
Max5 / paramMaxInt5 Integer 2147483647 Max value of the parameter.
Default5 / paramDefaultFloat5 Double 0 Default value of the parameter.
Min5 / paramMinFloat5 Double -1.79769e+308 Min value of the parameter.
Max5 / paramMaxFloat5 Double 1.79769e+308 Max value of the parameter.
Default5 / paramDefaultVec25 Double x: 0 y: 0 Default value of the parameter.
Min5 / paramMinVec25 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max5 / paramMaxVec25 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default5 / paramDefaultVec35 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default5 / paramDefaultVec45 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType6 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName6 String   Name of the parameter, as used in the shader.
Label / paramLabel6 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint6 String   Help for the parameter.
Default6 / paramDefaultBool6 Boolean Off Default value of the parameter.
Default6 / paramDefaultInt6 Integer 0 Default value of the parameter.
Min6 / paramMinInt6 Integer -2147483648 Min value of the parameter.
Max6 / paramMaxInt6 Integer 2147483647 Max value of the parameter.
Default6 / paramDefaultFloat6 Double 0 Default value of the parameter.
Min6 / paramMinFloat6 Double -1.79769e+308 Min value of the parameter.
Max6 / paramMaxFloat6 Double 1.79769e+308 Max value of the parameter.
Default6 / paramDefaultVec26 Double x: 0 y: 0 Default value of the parameter.
Min6 / paramMinVec26 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max6 / paramMaxVec26 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default6 / paramDefaultVec36 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default6 / paramDefaultVec46 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType7 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName7 String   Name of the parameter, as used in the shader.
Label / paramLabel7 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint7 String   Help for the parameter.
Default7 / paramDefaultBool7 Boolean Off Default value of the parameter.
Default7 / paramDefaultInt7 Integer 0 Default value of the parameter.
Min7 / paramMinInt7 Integer -2147483648 Min value of the parameter.
Max7 / paramMaxInt7 Integer 2147483647 Max value of the parameter.
Default7 / paramDefaultFloat7 Double 0 Default value of the parameter.
Min7 / paramMinFloat7 Double -1.79769e+308 Min value of the parameter.
Max7 / paramMaxFloat7 Double 1.79769e+308 Max value of the parameter.
Default7 / paramDefaultVec27 Double x: 0 y: 0 Default value of the parameter.
Min7 / paramMinVec27 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max7 / paramMaxVec27 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default7 / paramDefaultVec37 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default7 / paramDefaultVec47 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType8 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName8 String   Name of the parameter, as used in the shader.
Label / paramLabel8 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint8 String   Help for the parameter.
Default8 / paramDefaultBool8 Boolean Off Default value of the parameter.
Default8 / paramDefaultInt8 Integer 0 Default value of the parameter.
Min8 / paramMinInt8 Integer -2147483648 Min value of the parameter.
Max8 / paramMaxInt8 Integer 2147483647 Max value of the parameter.
Default8 / paramDefaultFloat8 Double 0 Default value of the parameter.
Min8 / paramMinFloat8 Double -1.79769e+308 Min value of the parameter.
Max8 / paramMaxFloat8 Double 1.79769e+308 Max value of the parameter.
Default8 / paramDefaultVec28 Double x: 0 y: 0 Default value of the parameter.
Min8 / paramMinVec28 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max8 / paramMaxVec28 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default8 / paramDefaultVec38 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default8 / paramDefaultVec48 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType9 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName9 String   Name of the parameter, as used in the shader.
Label / paramLabel9 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint9 String   Help for the parameter.
Default9 / paramDefaultBool9 Boolean Off Default value of the parameter.
Default9 / paramDefaultInt9 Integer 0 Default value of the parameter.
Min9 / paramMinInt9 Integer -2147483648 Min value of the parameter.
Max9 / paramMaxInt9 Integer 2147483647 Max value of the parameter.
Default9 / paramDefaultFloat9 Double 0 Default value of the parameter.
Min9 / paramMinFloat9 Double -1.79769e+308 Min value of the parameter.
Max9 / paramMaxFloat9 Double 1.79769e+308 Max value of the parameter.
Default9 / paramDefaultVec29 Double x: 0 y: 0 Default value of the parameter.
Min9 / paramMinVec29 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max9 / paramMaxVec29 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default9 / paramDefaultVec39 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default9 / paramDefaultVec49 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType10 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName10 String   Name of the parameter, as used in the shader.
Label / paramLabel10 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint10 String   Help for the parameter.
Default10 / paramDefaultBool10 Boolean Off Default value of the parameter.
Default10 / paramDefaultInt10 Integer 0 Default value of the parameter.
Min10 / paramMinInt10 Integer -2147483648 Min value of the parameter.
Max10 / paramMaxInt10 Integer 2147483647 Max value of the parameter.
Default10 / paramDefaultFloat10 Double 0 Default value of the parameter.
Min10 / paramMinFloat10 Double -1.79769e+308 Min value of the parameter.
Max10 / paramMaxFloat10 Double 1.79769e+308 Max value of the parameter.
Default10 / paramDefaultVec210 Double x: 0 y: 0 Default value of the parameter.
Min10 / paramMinVec210 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max10 / paramMaxVec210 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default10 / paramDefaultVec310 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default10 / paramDefaultVec410 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType11 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName11 String   Name of the parameter, as used in the shader.
Label / paramLabel11 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint11 String   Help for the parameter.
Default11 / paramDefaultBool11 Boolean Off Default value of the parameter.
Default11 / paramDefaultInt11 Integer 0 Default value of the parameter.
Min11 / paramMinInt11 Integer -2147483648 Min value of the parameter.
Max11 / paramMaxInt11 Integer 2147483647 Max value of the parameter.
Default11 / paramDefaultFloat11 Double 0 Default value of the parameter.
Min11 / paramMinFloat11 Double -1.79769e+308 Min value of the parameter.
Max11 / paramMaxFloat11 Double 1.79769e+308 Max value of the parameter.
Default11 / paramDefaultVec211 Double x: 0 y: 0 Default value of the parameter.
Min11 / paramMinVec211 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max11 / paramMaxVec211 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default11 / paramDefaultVec311 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default11 / paramDefaultVec411 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType12 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName12 String   Name of the parameter, as used in the shader.
Label / paramLabel12 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint12 String   Help for the parameter.
Default12 / paramDefaultBool12 Boolean Off Default value of the parameter.
Default12 / paramDefaultInt12 Integer 0 Default value of the parameter.
Min12 / paramMinInt12 Integer -2147483648 Min value of the parameter.
Max12 / paramMaxInt12 Integer 2147483647 Max value of the parameter.
Default12 / paramDefaultFloat12 Double 0 Default value of the parameter.
Min12 / paramMinFloat12 Double -1.79769e+308 Min value of the parameter.
Max12 / paramMaxFloat12 Double 1.79769e+308 Max value of the parameter.
Default12 / paramDefaultVec212 Double x: 0 y: 0 Default value of the parameter.
Min12 / paramMinVec212 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max12 / paramMaxVec212 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default12 / paramDefaultVec312 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default12 / paramDefaultVec412 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType13 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName13 String   Name of the parameter, as used in the shader.
Label / paramLabel13 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint13 String   Help for the parameter.
Default13 / paramDefaultBool13 Boolean Off Default value of the parameter.
Default13 / paramDefaultInt13 Integer 0 Default value of the parameter.
Min13 / paramMinInt13 Integer -2147483648 Min value of the parameter.
Max13 / paramMaxInt13 Integer 2147483647 Max value of the parameter.
Default13 / paramDefaultFloat13 Double 0 Default value of the parameter.
Min13 / paramMinFloat13 Double -1.79769e+308 Min value of the parameter.
Max13 / paramMaxFloat13 Double 1.79769e+308 Max value of the parameter.
Default13 / paramDefaultVec213 Double x: 0 y: 0 Default value of the parameter.
Min13 / paramMinVec213 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max13 / paramMaxVec213 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default13 / paramDefaultVec313 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default13 / paramDefaultVec413 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType14 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName14 String   Name of the parameter, as used in the shader.
Label / paramLabel14 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint14 String   Help for the parameter.
Default14 / paramDefaultBool14 Boolean Off Default value of the parameter.
Default14 / paramDefaultInt14 Integer 0 Default value of the parameter.
Min14 / paramMinInt14 Integer -2147483648 Min value of the parameter.
Max14 / paramMaxInt14 Integer 2147483647 Max value of the parameter.
Default14 / paramDefaultFloat14 Double 0 Default value of the parameter.
Min14 / paramMinFloat14 Double -1.79769e+308 Min value of the parameter.
Max14 / paramMaxFloat14 Double 1.79769e+308 Max value of the parameter.
Default14 / paramDefaultVec214 Double x: 0 y: 0 Default value of the parameter.
Min14 / paramMinVec214 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max14 / paramMaxVec214 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default14 / paramDefaultVec314 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default14 / paramDefaultVec414 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType15 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName15 String   Name of the parameter, as used in the shader.
Label / paramLabel15 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint15 String   Help for the parameter.
Default15 / paramDefaultBool15 Boolean Off Default value of the parameter.
Default15 / paramDefaultInt15 Integer 0 Default value of the parameter.
Min15 / paramMinInt15 Integer -2147483648 Min value of the parameter.
Max15 / paramMaxInt15 Integer 2147483647 Max value of the parameter.
Default15 / paramDefaultFloat15 Double 0 Default value of the parameter.
Min15 / paramMinFloat15 Double -1.79769e+308 Min value of the parameter.
Max15 / paramMaxFloat15 Double 1.79769e+308 Max value of the parameter.
Default15 / paramDefaultVec215 Double x: 0 y: 0 Default value of the parameter.
Min15 / paramMinVec215 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max15 / paramMaxVec215 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default15 / paramDefaultVec315 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default15 / paramDefaultVec415 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType16 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName16 String   Name of the parameter, as used in the shader.
Label / paramLabel16 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint16 String   Help for the parameter.
Default16 / paramDefaultBool16 Boolean Off Default value of the parameter.
Default16 / paramDefaultInt16 Integer 0 Default value of the parameter.
Min16 / paramMinInt16 Integer -2147483648 Min value of the parameter.
Max16 / paramMaxInt16 Integer 2147483647 Max value of the parameter.
Default16 / paramDefaultFloat16 Double 0 Default value of the parameter.
Min16 / paramMinFloat16 Double -1.79769e+308 Min value of the parameter.
Max16 / paramMaxFloat16 Double 1.79769e+308 Max value of the parameter.
Default16 / paramDefaultVec216 Double x: 0 y: 0 Default value of the parameter.
Min16 / paramMinVec216 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max16 / paramMaxVec216 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default16 / paramDefaultVec316 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default16 / paramDefaultVec416 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType17 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName17 String   Name of the parameter, as used in the shader.
Label / paramLabel17 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint17 String   Help for the parameter.
Default17 / paramDefaultBool17 Boolean Off Default value of the parameter.
Default17 / paramDefaultInt17 Integer 0 Default value of the parameter.
Min17 / paramMinInt17 Integer -2147483648 Min value of the parameter.
Max17 / paramMaxInt17 Integer 2147483647 Max value of the parameter.
Default17 / paramDefaultFloat17 Double 0 Default value of the parameter.
Min17 / paramMinFloat17 Double -1.79769e+308 Min value of the parameter.
Max17 / paramMaxFloat17 Double 1.79769e+308 Max value of the parameter.
Default17 / paramDefaultVec217 Double x: 0 y: 0 Default value of the parameter.
Min17 / paramMinVec217 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max17 / paramMaxVec217 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default17 / paramDefaultVec317 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default17 / paramDefaultVec417 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType18 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName18 String   Name of the parameter, as used in the shader.
Label / paramLabel18 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint18 String   Help for the parameter.
Default18 / paramDefaultBool18 Boolean Off Default value of the parameter.
Default18 / paramDefaultInt18 Integer 0 Default value of the parameter.
Min18 / paramMinInt18 Integer -2147483648 Min value of the parameter.
Max18 / paramMaxInt18 Integer 2147483647 Max value of the parameter.
Default18 / paramDefaultFloat18 Double 0 Default value of the parameter.
Min18 / paramMinFloat18 Double -1.79769e+308 Min value of the parameter.
Max18 / paramMaxFloat18 Double 1.79769e+308 Max value of the parameter.
Default18 / paramDefaultVec218 Double x: 0 y: 0 Default value of the parameter.
Min18 / paramMinVec218 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max18 / paramMaxVec218 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default18 / paramDefaultVec318 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default18 / paramDefaultVec418 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Type / paramType19 Choice none
Type of the parameter.
none: No parameter.
bool: Boolean parameter (checkbox).
int: Integer parameter.
float: Floating-point parameter.
vec2: 2D floating-point parameter (e.g. position).
vec3: 3D floating-point parameter (e.g. 3D position or RGB color).
vec4: 4D floating-point parameter (e.g. RGBA color).
Name / paramName19 String   Name of the parameter, as used in the shader.
Label / paramLabel19 String   Label of the parameter, as displayed in the user interface.
Hint / paramHint19 String   Help for the parameter.
Default19 / paramDefaultBool19 Boolean Off Default value of the parameter.
Default19 / paramDefaultInt19 Integer 0 Default value of the parameter.
Min19 / paramMinInt19 Integer -2147483648 Min value of the parameter.
Max19 / paramMaxInt19 Integer 2147483647 Max value of the parameter.
Default19 / paramDefaultFloat19 Double 0 Default value of the parameter.
Min19 / paramMinFloat19 Double -1.79769e+308 Min value of the parameter.
Max19 / paramMaxFloat19 Double 1.79769e+308 Max value of the parameter.
Default19 / paramDefaultVec219 Double x: 0 y: 0 Default value of the parameter.
Min19 / paramMinVec219 Double x: -1.79769e+308 y: -1.79769e+308 Min value of the parameter.
Max19 / paramMaxVec219 Double x: 1.79769e+308 y: 1.79769e+308 Max value of the parameter.
Default19 / paramDefaultVec319 Color r: 0 g: 0 b: 0 Default value of the parameter.
Default19 / paramDefaultVec419 Color r: 0 g: 0 b: 0 a: 0 Default value of the parameter.
Enable GPU Render / enableGPU Boolean On
Enable GPU-based OpenGL render.
If the checkbox is checked but is not enabled (i.e. it cannot be unchecked), GPU render can not be enabled or disabled from the plugin and is probably part of the host options.
If the checkbox is not checked and is not enabled (i.e. it cannot be checked), GPU render is not available on this host.
CPU Driver / cpuDriver Choice llvmpipe
Driver for CPU rendering. May be “softpipe” , “llvmpipe” or “swr” (OpenSWR, not always available).
softpipe: Gallium softpipe driver from Mesa. A reference signle-threaded driver (slower, has GL_EXT_texture_filter_anisotropic GL_ARB_texture_query_lod GL_ARB_pipeline_statistics_query).
llvmpipe: Gallium llvmpipe driver from Mesa, if available. Uses LLVM for x86 JIT code generation and is multi-threaded (faster, has GL_ARB_buffer_storage GL_EXT_polygon_offset_clamp).
swr: OpenSWR driver from Mesa, if available. Fully utilizes modern instruction sets like AVX and AVX2 to achieve high rendering performance.
Renderer Info… / rendererInfo Button   Retrieve information about the current OpenGL renderer.
Help… / helpButton Button   Display help about using Shadertoy.