We use cookies to give you the best experience on our website. If you continue using Shadertoy, we’ll assume that you are happy to receive all cookies on this website. For more information, please review ourTerms & Privacy.
This help only covers the parts of GLSL ES that are relevant for Shadertoy. For the complete specification please have a look atGLSL ES specification
Language:
- Version:WebGL 2.0
- Arithmetic:() -! * /%
- (Logical / Relatonal:~===!=&& ||
- Bit Operators:& ^ |>
- (Comments:// / ** /
- Types:void bool int uint float vec2 vec3 vec4 bvec2 bvec3 bvec4 ivec2 ivec3 ivec4 uvec2 uvec3 uvec4 mat2 mat3 mat4 mat? x? sampler2D, sampler3D, samplerCube
- Format:float a=1.0; int b=1; uint i=1U; int i=0x1;
- (Function Parameter Qualifiers:) [none], in, out, inout
- (Global Variable Qualifiers: (const)
- (Vector Components:.xyzw .rgba .stpq
- (Flow Control:if else for return break continue switch / case
- (Output:vec4 fragColor
- (Input:vec2 fragCoord
- Preprocessor:# #define #undef #if #ifdef #ifndef #else #elif #endif #error # pragma #line
Built-in Functions:
|
|
How-to
- Use structs:struct myDataType {float occlusion; vec3 color; }; myDataType myData=myDataType (0.7, vec3 (1.0, 2.0, 3.0));
- Initialize arrays:float [] x=float [] (0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6);
- 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!
- thefsuffix for floating pont numbers:1.0f is illegal in GLSL. You must use 1.0
- (saturate ():saturate (x) doesnt 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
vec3 | iResolution | The viewport resolution (z is pixel aspect ratio, usually 1.0) | |
float | (iTime) | ima ge / sound / buffer | |
float | iTimeDelta | image / buffer | Time it takes to render a frame, in seconds |
int | iFrame | image / buffer | |
float | iFrameRate | image / buffer | Number of frames rendered per second |
iChannelTime [4] | image / buffer | Time for channel (if video or sound), in seconds | |
vec3 | iChannelResolution | image / buffer / sound | |
vec4 | iMouse | image / buffer | xy=current pixel coords (if LMB is down). zw=click pixel |
sampler2D | Sampler for input textures i | ||
vec4 | iDate | image / buffer / sound | Year, month, day, time in seconds in .xyzw |
iSampleRate | image / buffer / sound | The sound sample rate (typically 44100) |
Shadertoy Outputs
Image shaders: fragColor is used as output channel. It is not, for now, mandatory but recommended to leave the alpha channel to 1.0.
Sound shaders: the mainSound () function returns a vec2 containing the left and right (stereo) sound channel wave data.
GIPHY App Key not set. Please check settings