# Tokens for WebGL 2.0 Shader Language. # Preprocessor tokens "#" "#define" "#undef" "#if" "#ifdef" "#ifndef" "#else" "#elif" "#endif" "#error" "#pragma" "#extension" "#version" "#line" "defined" "#macros" "__LINE__" "__FILE__" "__VERSION__" "GL_ES" # Fragment shaders only "GL_FRAGMENT_PRECISION_HIGH" # Language tokens "(" ")" "+" "-" "~" "!" "*" "/" "%" "+" "-" "<<" ">>" "<" ">" "<=" ">=" "==" "!=" "+=" "-=" "*=" "/=" "%=" "<<=" ">>=" ";" "," "." "[" "]" "++" "--" "&" "^" "|" "&&" "||" # Keywords " attribute " " const " " uniform " " varying " " break " " continue " " do " " for " " while " " if " " else " " in " " out " " inout " " float " " int " " void " " bool " " true " " false " " lowp " " mediump " " highp " " precision " " invariant " " discard " " return" # Types, include valid examples and partial ones (that are invalid on their own) " mat2(" " mat2(1.0)" " mat2(1.0,2.0,3.0,4.0)" " mat3(vec2(1.0, 1.0),1.0,vec2(1.0, 1.0),1.0,vec2(1.0, 1.0),1.0)" " mat3(1.0)" " mat3(" " mat4(" " mat4(1.0)" " mat4(vec4(1.0),vec4(1.0,2.0,3.0,4.0),vec4(3.3),vec4(4.4))" "vec2" " vec2(1)" " vec3(1)" " vec3" " vec4(1)" " vec4" " ivec2(1) " " ivec2" " ivec3(1)" " ivec3" " ivec4(1)" " ivec4" " bvec2(true)" " bvec2" " bvec3(true)" " bvec3" " bvec4(true)" " bvec4" " sampler2D " " samplerCube " " struct " " sampler3D " " samplerCube " " sampler2DShadow " " sampler2DArray " " sampler2DArrayShadow " " sampler2DMS " " samplerCubeShadow " " isampler2D " " isampler3D " " isamplerCube " " isampler2DArray " " isampler2DMS " " usampler2D " " usampler3D " " usampler2DArray " " usampler2DMS " " usamplerCube " " image2D " " image3D " " imageCube " " image2DArray " " iimage2D " " iimage3D " " iimageCube " " iimage2DArray " " uimage2D " " uimage3D " " uimageCube " " uimage2DArray " " atomic_uint " # Builtin Variables "gl_Position" "gl_FragColor" "gl_FragData" "gl_FrontFacing" "gl_PointCoord" "gl_MaxDrawBuffers" "gl_MaxFragmentUniformVectors" "gl_MaxTextureImageUnits" "gl_MaxCombinedTextureImageUnits" "gl_MaxVertexTextureImageUnits" "gl_MaxVaryingVectors" "gl_MaxVertexUniformVectors" "gl_MaxVertexAttribs" "gl_FragCoord.x" "gl_FragCoord.y" "gl_FragCoord.z" "gl_FragData" "gl_FragDepth" "gl_InstanceID" "gl_NumWorkGroups" "gl_PointSize" "gl_VertexID" # misc. "void main(){" # Generated calls to builtin functions. " pow(1.0,1.0)" " fract(1.0)" " dFdx(1.0)" " step(1.0,1.0)" " min(1,1)" " min(1.0,1.0)" " dot(1.0,1.0)" " greaterThanEqual(uvec2(1,2),uvec2(1,2))" " asin(1.0)" " lessThanEqual(ivec2(1,-2),ivec2(1,-2))" " inversesqrt(1.0)" " length(1.0)" " acosh(1.0)" " roundEven(1.0)" " greaterThanEqual(ivec2(1,-2),ivec2(1,-2))" " greaterThan(uvec2(1,2),uvec2(1,2))" " radians(1.0)" " asinh(1.0)" " uintBitsToFloat(1)" " cos(1.0)" " ceil(1.0)" " equal(uvec2(1,2),uvec2(1,2))" " normalize(1.0)" " distance(1.0,1.0)" " abs(1)" " clamp(1.0,1.0,1.0)" " tan(1.0)" " smoothstep(1.0,1.0,1.0)" " isinf(1.0)" " not(bvec2(true,false))" " degrees(1.0)" " mix(1.0,1.0,true)" " max(1.0,1.0)" " lessThanEqual(uvec2(1,2),uvec2(1,2))" " round(1.0)" " atan(1.0,1.0)" " floatBitsToInt(1.0)" " abs(1.0)" " fwidth(1.0)" " lessThan(ivec2(1,-2),ivec2(1,-2))" " intBitsToFloat(1)" " mix(1.0,1.0,1.0)" " notEqual(uvec2(1,2),uvec2(1,2))" " floor(1.0)" " refract(1.0,1.0,1.0)" " equal(ivec2(1,-2),ivec2(1,-2))" " max(1,1)" " cosh(1.0)" " isnan(1.0)" " sign(1)" " mod(1.0,1.0)" " acos(1.0)" " sinh(1.0)" " greaterThan(ivec2(1,-2),ivec2(1,-2))" " exp2(1.0)" " notEqual(bvec2(true,false),bvec2(true,false))" " reflect(1.0,1.0)" " lessThan(uvec2(1,2),uvec2(1,2))" " sqrt(1.0)" " sign(1.0)" " clamp(1,1,1)" " sin(1.0)" " atan(1.0)" " tanh(1.0)" " dFdy(1.0)" " notEqual(ivec2(1,-2),ivec2(1,-2))" " trunc(1.0)" " log2(1.0)" " equal(bvec2(true,false),bvec2(true,false))" " atanh(1.0)" " exp(1.0)" " faceforward(1.0,1.0,1.0)" " floatBitsToUint(1.0)" " log(1.0)"