Skip to content

@tmrw-realityos/charm


@tmrw-realityos/charm / WebGPUMesh

Class: WebGPUMesh

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMesh.ts:85

WebGPUMesh is the class that manages a mesh in the GPU. It contains a set of primitives and a WebGPUBuffer where the primitives geometry is stored. It doesnt store in RAM the geometry unless it is created using the Mesh class. It inherits from Mesh class to implement some containers in case we want to create dynamic geometry.

Extends

Constructors

Constructor

new WebGPUMesh(): WebGPUMesh

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMesh.ts:89

Returns

WebGPUMesh

Overrides

Mesh.constructor

Properties

bounding

bounding: AABB

Defined in: packages/charm/src/graphics/mesh.ts:29

Inherited from

Mesh.bounding


buffer?

optional buffer: WebGPUBuffer

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMesh.ts:86


colors?

optional colors: number[] | Uint8Array<ArrayBufferLike>

Defined in: packages/charm/src/graphics/mesh.ts:36

Inherited from

Mesh.colors


indices?

optional indices: Uint32Array<ArrayBufferLike> | number[] | Uint16Array<ArrayBufferLike>

Defined in: packages/charm/src/graphics/mesh.ts:37

Inherited from

Mesh.indices


mustUpdate

mustUpdate: boolean = false

Defined in: packages/charm/src/graphics/mesh.ts:38

Inherited from

Mesh.mustUpdate


normals?

optional normals: Float32Array<ArrayBufferLike> | number[]

Defined in: packages/charm/src/graphics/mesh.ts:32

Inherited from

Mesh.normals


positions?

optional positions: Float32Array<ArrayBufferLike> | number[]

Defined in: packages/charm/src/graphics/mesh.ts:31

Inherited from

Mesh.positions


primitives

primitives: WebGPUPrimitive[] = []

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMesh.ts:87

Overrides

Mesh.primitives


tangents?

optional tangents: Float32Array<ArrayBufferLike> | number[]

Defined in: packages/charm/src/graphics/mesh.ts:35

Inherited from

Mesh.tangents


texcoords?

optional texcoords: Float32Array<ArrayBufferLike> | number[]

Defined in: packages/charm/src/graphics/mesh.ts:33

Inherited from

Mesh.texcoords


texcoords1?

optional texcoords1: Float32Array<ArrayBufferLike> | number[]

Defined in: packages/charm/src/graphics/mesh.ts:34

Inherited from

Mesh.texcoords1


attribProperties

static attribProperties: object[]

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMesh.ts:105

bytesPerComponent

bytesPerComponent: number = 4

format

format: string = "float32x3"

location

location: number = 0

name

name: string = "positions"

numComponents

numComponents: number = 3

Methods

appendMesh()

appendMesh(mesh, transform): void

Defined in: packages/charm/src/graphics/mesh.ts:130

Parameters

mesh

Mesh

transform

undefined | mat4

Returns

void

Inherited from

Mesh.appendMesh


bakeTransform()

bakeTransform(transform, start, range): void

Defined in: packages/charm/src/graphics/mesh.ts:99

applies a transformation in place to every vertex and normal

Parameters

transform

mat4

a mat4 that contains the transform to apply

start

number = 0

an offset defined from which primitive to start

range

number = -1

the number of primitives that must be affected

Returns

void

Inherited from

Mesh.bakeTransform


bindToRenderPass()

bindToRenderPass(pass): void

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMesh.ts:295

Parameters

pass

GPURenderPassEncoder

Returns

void


computeNormals()

computeNormals(): Float32Array

Defined in: packages/charm/src/graphics/mesh.ts:187

computes the normals for every vertex based on connectivity and face orientation

Returns

Float32Array

Inherited from

Mesh.computeNormals


copyFrom()

copyFrom(mesh): void

Defined in: packages/charm/src/graphics/mesh.ts:76

Parameters

mesh

Mesh

Returns

void

Inherited from

Mesh.copyFrom


createCube()

createCube(halfsize): void

Defined in: packages/charm/src/graphics/mesh.ts:297

Parameters

halfsize

number

Returns

void

Inherited from

Mesh.createCube


createCylinder()

createCylinder(height, lowRadius, highRadius, subdivisions): void

Defined in: packages/charm/src/graphics/mesh.ts:320

Parameters

height

number

lowRadius

number

highRadius

number

subdivisions

number = 32

Returns

void

Inherited from

Mesh.createCylinder


createGrid()

createGrid(halfsize, subdivisions): void

Defined in: packages/charm/src/graphics/mesh.ts:253

Parameters

halfsize

number

subdivisions

number = 10

Returns

void

Inherited from

Mesh.createGrid


createPlane()

createPlane(halfsize, xy): void

Defined in: packages/charm/src/graphics/mesh.ts:276

Parameters

halfsize

number

xy

boolean = false

Returns

void

Inherited from

Mesh.createPlane


createPrimitive()

createPrimitive(): WebGPUPrimitive

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMesh.ts:98

Returns

WebGPUPrimitive

Overrides

Mesh.createPrimitive


createSphere()

createSphere(radius, subdivisions, arc, hemi): void

Defined in: packages/charm/src/graphics/mesh.ts:367

Parameters

radius

number

subdivisions

number = 24

arc

number = 24

hemi

boolean = false

Returns

void

Inherited from

Mesh.createSphere


createTorus()

createTorus(innerradius, outerradius, angle, innerslices, outerslices): void

Defined in: packages/charm/src/graphics/mesh.ts:420

innerradius is the small, outerradius is the big one. Use angle to only create a partial torus

Parameters

innerradius

number

outerradius

number

angle

number = ...

innerslices

number = 24

outerslices

number = 32

Returns

void

Inherited from

Mesh.createTorus


destroy()

destroy(): void

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMesh.ts:93

Returns

void

Overrides

Mesh.destroy


updateBounding()

updateBounding(): void

Defined in: packages/charm/src/graphics/mesh.ts:57

Returns

void

Inherited from

Mesh.updateBounding


uploadToGPU()

uploadToGPU(backend): void

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMesh.ts:158

Called from SceneToRenderables before rendering to upload geometry to GPU

Parameters

backend

RendererBackend

Returns

void

Overrides

Mesh.uploadToGPU