Webgl Ref?PDF
Webgl Ref?PDF
Per-Fragment Operations [5.14.3] ArrayBuffer and Typed Arrays [5.13] ViewType(ArrayBuffer buffer, [optional] ulong byteOffset,
[optional] ulong length);
void blendColor(clampf red, clampf green, clampf blue, Data is transferred to WebGL using ArrayBuffer and views.
Buffers represent unstructured binary data, which can be Create a new view of given buffer, starting at optional byte
clampf alpha); offset, extending for optional length elements.
modified using one or more typed array views. Consult the
void blendEquation(enum mode); ECMAScript specification for more details on Typed Arrays. buffer: Read-only, buffer backing this view
mode: See modeRGB for blendEquationSeparate byteOffset: Read-only, byte offset of view start in buffer
void blendEquationSeparate(enum modeRGB, Buffers length: Read-only, number of elements in this view
enum modeAlpha); ArrayBuffer(ulong byteLength);
byteLength: read-only, length of view in bytes. Other Properties
modeRGB, and modeAlpha: FUNC_ADD, FUNC_SUBTRACT,
FUNC_REVERSE_SUBTRACT Creates a new buffer. To modify the data, create one or more byteLength: Read-only, length of view in bytes.
views referencing it. const ulong BYTES_PER_ELEMENT: element size in bytes.
void blendFunc(enum sfactor, enum dfactor);
sfactor: Same as for dfactor, plus SRC_ALPHA_SATURATE Views Methods
dfactor: ZERO, ONE, [ONE_MINUS_]SRC_COLOR, In the following, ViewType may be Int8Array, Int16Array,
[ONE_MINUS_]DST_COLOR, [ONE_MINUS_]SRC_ALPHA, view[i] = get/set element i
[ONE_MINUS_]DST_ALPHA, [ONE_MINUS_]CONSTANT_COLOR,
Int32Array, Uint8Array, Uint16Array, Uint32Array, Float32Array.
set(ViewType other[, ulong offset]);
[ONE_MINUS_]CONSTANT_ALPHA ViewType(ulong length);
sfactor and dfactor may not both reference constant color Creates a view and a new underlying buffer. set(type[] other[, ulong offset]);
length: Read-only, number of elements in this view. Replace elements in this view with those from other, starting
void blendFuncSeparate(enum srcRGB, enum dstRGB, at optional offset.
enum srcAlpha, enum dstAlpha); ViewType(ViewType other);
srcRGB, srcAlpha: See sfactor for blendFunc Creates new underlying buffer and copies other array. ViewType subArray(long begin[, long end]);
dstRGB, dstAlpha: See dfactor for blendFunc Return a subset of this view, referencing the same underlying
ViewType(type[] other); buffer.
void depthFunc(enum func); Creates new underlying buffer and copies other array.
func: NEVER, ALWAYS, LESS, [NOT]EQUAL, {GE, LE}QUAL, GREATER
void sampleCoverage(float value, bool invert);
void stencilFunc(enum func, int ref, uint mask); Buffer Objects [5.14.5] [3.7.3] void bufferData(enum target, BufferDataSource data,
enum usage);
func: NEVER, ALWAYS, LESS, LEQUAL, [NOT]EQUAL, GREATER, Once bound, buffers may not be rebound with a different target.
GEQUAL target and usage: Same as for bufferData above
void bindBuffer(enum target, WebGLBuffer? buffer); void bufferSubData(enum target, long offset,
void stencilFuncSeparate(enum face, enum func, int ref, target: ARRAY_BUFFER, ELEMENT_ARRAY_BUFFER,
uint mask); PIXEL_[UN]PACK_BUFFER, COPY_{READ, WRITE}_BUFFER, BufferDataSource data);
face: FRONT, BACK, FRONT_AND_BACK TRANSFORM_FEEDBACK_BUFFER, UNIFORM_BUFFER target: See target for bindBuffer
func: NEVER, ALWAYS, LESS, LEQUAL, [NOT]EQUAL, GREATER, void bufferSubData(enum target, intptr dstByteOffset,
GEQUAL typedef (ArrayBuffer or ArrayBufferView) BufferDataSource
ArrayBufferView srcData, uint srcOffset[, uint length=0]);
void stencilOp(enum fail, enum zfail, enum zpass); void bufferData(enum target, long size, enum usage); target: See target for bindBuffer
fail, zfail, and zpass: KEEP, ZERO, REPLACE, INCR, DECR, INVERT, target: See target for bindBuffer void copyBufferSubData(enum readTarget, enum writeTarget,
INCR_WRAP, DECR_WRAP usage: STREAM_{DRAW, READ, COPY}, STATIC_{DRAW, READ, COPY},
DYNAMIC_{DRAW, READ, COPY} intptr readOffset, intptr writeOffset, sizeiptr size);
void stencilOpSeparate(enum face, enum fail, enum zfail,
enum zpass); void bufferData(enum target, ArrayBufferView srcData, • void getBufferSubData(enum target, intptr srcByteOffset,
face: FRONT, BACK, FRONT_AND_BACK enum usage, uint srcOffset[, uint length=0]); ArrayBufferView dstBuffer[, uint dstOffset=0[,
fail, zfail, and zpass: See fail, zfail, and zpass for stencilOp target and usage: Same as for bufferData above uint length=0]]);
Color Texture
Internal Format Format Type Renderable Filterable
R8 RED UNSIGNED_BYTE Y Y
R8_SNORM RED BYTE Y
R16F RED HALF_FLOAT, FLOAT Y Y
R32F RED FLOAT Y Y
R8UI RED_INTEGER UNSIGNED_BYTE Y
R8I RED_INTEGER BYTE Y
R16UI RED_INTEGER UNSIGNED_SHORT Y
R16I RED_INTEGER SHORT Y
R32UI RED_INTEGER UNSIGNED_INT Y
R32I RED_INTEGER INT Y
RG8 RG UNSIGNED_BYTE Y Y
RG8_SNORM RG BYTE Y
RG16F RG HALF_FLOAT,FLOAT Y Y
RG32F RG FLOAT Y Y
RG8UI RG_INTEGER UNSIGNED_BYTE Y
RG8I RG_INTEGER BYTE Y
RG16UI RG_INTEGER UNSIGNED_SHORT Y
RG16I RG_INTEGER SHORT Y
RG32UI RG_INTEGER UNSIGNED_INT Y
RG32I RG_INTEGER INT Y
RGB8 RGB UNSIGNED_BYTE Y Y
SRGB8 RGB UNSIGNED_BYTE Y
RGB565 RGB UNSIGNED_BYTE, UNSIGNED_SHORT_5_6_5 Y Y
RGB8_SNORM RGB BYTE Y
R11F_G11F_B10F RGB UNSIGNED_INT_10F_11F_11F_REV, HALF_FLOAT, FLOAT Y Y
RGB9_E5 RGB UNSIGNED_INT_5_9_9_9_REV, HALF_FLOAT, FLOAT Y
RGB16F RGB HALF_FLOAT, FLOAT Y
RGB32F RGB FLOAT Y
RGB8UI RGB_INTEGER UNSIGNED_BYTE
RGB8I RGB_INTEGER BYTE
RGB16UI RGB_INTEGER UNSIGNED_SHORT
RGB16I RGB_INTEGER SHORT
RGB32UI RGB_INTEGER UNSIGNED_INT
RGB32I RGB_INTEGER INT
RGBA8 RGBA UNSIGNED_BYTE Y Y
SRGB8_ALPHA8 RGBA UNSIGNED_BYTE Y Y
RGBA8_SNORM RGBA BYTE Y
UNSIGNED_BYTE, UNSIGNED_SHORT_5_5_5_1,
RGB5_A1 RGBA Y Y
UNSIGNED_INT_2_10_10_10_REV
RGBA4 RGBA UNSIGNED_BYTE, UNSIGNED_SHORT_4_4_4_4 Y Y
RGB10_A2 RGBA UNSIGNED_INT_2_10_10_10_REV Y Y
RGBA16F RGBA HALF_FLOAT, FLOAT Y Y
RGBA32F RGBA FLOAT Y Y
RGBA8UI RGBA_INTEGER UNSIGNED_BYTE Y
RGBA8I RGBA_INTEGER BYTE Y
RGB10_A2UI RGBA_INTEGER UNSIGNED_INT_2_10_10_10_REV Y
RGBA16UI RGBA_INTEGER UNSIGNED_SHORT Y
RGBA16I RGBA_INTEGER SHORT Y
RGBA32I RGBA_INTEGER INT Y
RGBA32UI RGBA_INTEGER UNSIGNED_INT Y
usampler2DArray access unsigned integer 2D array texture Input Layout Qualifiers [4.3.8.1] Invariant Qualifiers Examples [4.6]
For all shader stages:
location = integer-constant #pragma STDGL invariant(all) Force all output variables to be invariant
Structures and Arrays [4.1.8, 4.1.9]
Structures struct type-name { Output Layout Qualifiers [4.3.8.2] invariant gl_Position; Qualify a previously declared variable
members For all shader stages:
} struct-name[]; // optional variable declaration, invariant centroid out
// optionally an array
location = integer-constant vec3 Color;
Qualify as part of a variable declaration
Built-In Inputs, Outputs, and Constants [7] Built-In Constants With Minimum Values [7.3]
Shader programs use special variables to communicate with fixed-function parts of the pipeline. Output special Built-in Constant Minimum value
variables may be read back after writing. Input special variables are read-only. All special variables have global scope. const mediump int gl_MaxVertexAttribs 16
Vertex Shader Special Variables [7.1] const mediump int gl_MaxVertexUniformVectors 256
Inputs: const mediump int gl_MaxVertexOutputVectors 16
int gl_VertexID; // integer index const mediump int gl_MaxFragmentInputVectors 15
int gl_InstanceID; // instance number const mediump int gl_MaxVertexTextureImageUnits 16
const mediump int gl_MaxCombinedTextureImageUnits 32
Outputs: const mediump int gl_MaxTextureImageUnits 16
out gl_PerVertex { const mediump int gl_MaxFragmentUniformVectors 224
vec4 gl_Position; // transformed vertex position in clip coordinates const mediump int gl_MaxDrawBuffers 4
float gl_PointSize; // transformed point size in pixels (point rasterization only) const mediump int gl_MinProgramTexelOffset -8
const mediump int gl_MaxProgramTexelOffset 7
};
Built-In Uniform State [7.4]
Fragment Shader Special Variables [7.2] As an aid to accessing OpenGL ES processing state, the following uniform
Inputs: variables are built into the OpenGL ES Shading Language.
highp vec4 gl_FragCoord; // fragment position within frame buffer struct gl_DepthRangeParameters {
bool gl_FrontFacing; // fragment belongs to a front-facing primitive float near; // n
mediump vec2 gl_PointCoord; // 0.0 to 1.0 for each component float far; // f
Outputs: float diff; // f - n
highp float gl_FragDepth; // depth range };
uniform gl_DepthRangeParameters gl_DepthRange;
WebGL and OpenGL ES are trademarks of Khronos Group. The Khronos Group is an
industry consortium creating open standards for the authoring and acceleration of
parallel computing, graphics and dynamic media on a wide variety of platforms and
devices.
See khronos.org to learn about the Khronos Group. See khronos.org/webgl to learn
about WebGL. See khronos.org/opengles to learn about OpenGL ES.
©2019 The Khronos® Group Inc - Rev. 0619 Reference card production by Miller & Mattson www.millermattson.com khr.io/glesregistry