std140 Layout
For Uniform
blocks in the rendering pipeline, WGPU follows OpenGL's std140
layout rules, which are strictly defined.
See:
Variable type | Size and Alignment |
---|---|
Scalar bool , int , uint , float , and double | Both the size and alignment are the siz eof the scalar in basic machine types. |
ivec2 | Both the size and alignment are twice the size of the underlying scalar type. |
vec3 and vec4 | Both the size and alignment are 4x the size of the underlying scalar type. Note: the underlying scalar type is usually going to be float , which has size and alignment 4 . |
An array of scalars or vectors | The size and alignment of each element in the array will be the size of the element type, _rounded up to the multiple of the size of a vec4 . The array's size will be this rounded-up element size times the count of elements in the array. |
mat4 or mat4[] | Same layout as an array of N vectors each with R components (for column-major matrices) or C components (for row-major matrices). |
struct or struct[] | Structure alignment will be the alignment for the biggest structure member, rounded up to a multiple of the size of a vec4 . Each structure will start on this alignment, and its size will be the space needed by its members, according tot he previous rules, rounded up to a multiple of the structure alignment. |