API Reference

Class List

pc.VertexFormat

A vertex format is a descriptor that defines the layout of vertex data inside a pc.VertexBuffer.

// Specify 3-component positions (x, y, z)
var vertexFormat = new pc.VertexFormat(graphicsDevice, [
    { semantic: pc.SEMANTIC_POSITION, components: 3, type: pc.TYPE_FLOAT32 }
]);
// Specify 2-component positions (x, y), a texture coordinate (u, v) and a vertex color (r, g, b, a)
var vertexFormat = new pc.VertexFormat(graphicsDevice, [
    { semantic: pc.SEMANTIC_POSITION, components: 2, type: pc.TYPE_FLOAT32 },
    { semantic: pc.SEMANTIC_TEXCOORD0, components: 2, type: pc.TYPE_FLOAT32 },
    { semantic: pc.SEMANTIC_COLOR, components: 4, type: pc.TYPE_UINT8, normalize: true }
]);

Summary

Static Properties

defaultInstancingFormat

Returns pc.VertexFormat used to store matrices of type pc.Mat4 for hardware instancing.[read only]

Properties

elements

The vertex attribute elements.

elements[].dataType

The data type of the attribute.

elements[].name

The meaning of the vertex element.

elements[].normalize

If true, vertex attribute data will be mapped from a 0 to 255 range down to 0 to 1 when fed to a shader.

elements[].numComponents

The number of components of the vertex attribute.

elements[].offset

The number of initial bytes at the start of a vertex that are not relevant to this attribute.

elements[].scopeId

The shader input variable corresponding to the attribute.

elements[].size

The size of the attribute in bytes.

elements[].stride

The number of total bytes that are between the start of one vertex, and the start of the next.

Details

Static Properties

defaultInstancingFormat

Returns pc.VertexFormat used to store matrices of type pc.Mat4 for hardware instancing.

[read only]

Constructor

VertexFormat(graphicsDevice, description, [vertexCount])

Returns a new pc.VertexFormat object.

// Specify 3-component positions (x, y, z)
var vertexFormat = new pc.VertexFormat(graphicsDevice, [
    { semantic: pc.SEMANTIC_POSITION, components: 3, type: pc.TYPE_FLOAT32 }
]);
// Specify 2-component positions (x, y), a texture coordinate (u, v) and a vertex color (r, g, b, a)
var vertexFormat = new pc.VertexFormat(graphicsDevice, [
    { semantic: pc.SEMANTIC_POSITION, components: 2, type: pc.TYPE_FLOAT32 },
    { semantic: pc.SEMANTIC_TEXCOORD0, components: 2, type: pc.TYPE_FLOAT32 },
    { semantic: pc.SEMANTIC_COLOR, components: 4, type: pc.TYPE_UINT8, normalize: true }
]);

Parameters

graphicsDevicepc.GraphicsDevice

The graphics device used to manage this vertex format.

descriptionobject[]

An array of vertex attribute descriptions.

description[].semanticstring

The meaning of the vertex element. This is used to link the vertex data to a shader input. Can be:

If vertex data has a meaning other that one of those listed above, use the user-defined semantics: pc.SEMANTIC_ATTR0 to pc.SEMANTIC_ATTR15.

description[].componentsnumber

The number of components of the vertex attribute. Can be 1, 2, 3 or 4.

description[].typenumber

The data type of the attribute. Can be:

description[].normalizeboolean

If true, vertex attribute data will be mapped from a 0 to 255 range down to 0 to 1 when fed to a shader. If false, vertex attribute data is left unchanged. If this property is unspecified, false is assumed.

vertexCountnumber

When specified, vertex format will be set up for non-interleaved format with a specified number of vertices. (example: PPPPNNNNCCCC), where arrays of individual attributes will be stored one right after the other (subject to alignment requirements). Note that in this case, the format depends on the number of vertices, and needs to change when the number of vertices changes. When not specified, vertex format will be interleaved. (example: PNCPNCPNCPNC)

Properties

object[]elements

The vertex attribute elements.

numberelements[].dataType

The data type of the attribute. Can be:

stringelements[].name

The meaning of the vertex element. This is used to link the vertex data to a shader input. Can be:

If vertex data has a meaning other that one of those listed above, use the user-defined semantics: pc.SEMANTIC_ATTR0 to pc.SEMANTIC_ATTR15.

booleanelements[].normalize

If true, vertex attribute data will be mapped from a 0 to 255 range down to 0 to 1 when fed to a shader. If false, vertex attribute data is left unchanged. If this property is unspecified, false is assumed.

numberelements[].numComponents

The number of components of the vertex attribute. Can be 1, 2, 3 or 4.

numberelements[].offset

The number of initial bytes at the start of a vertex that are not relevant to this attribute.

pc.ScopeIdelements[].scopeId

The shader input variable corresponding to the attribute.

numberelements[].size

The size of the attribute in bytes.

numberelements[].stride

The number of total bytes that are between the start of one vertex, and the start of the next.