Skip to main content

Class: UniformStore<TPropGroups>

Defined in: modules/core/src/portable/uniform-store.ts:52

A uniform store holds a uniform values for one or more uniform blocks,

  • It can generate binary data for any uniform buffer
  • It can manage a uniform buffer for each block
  • It can update managed uniform buffers with a single call
  • It performs some book keeping on what has changed to minimize unnecessary writes to uniform buffers.

Type Parameters​

TPropGroups​

TPropGroups extends Record<string, Record<string, unknown>> = Record<string, Record<string, unknown>>

Constructors​

Constructor​

new UniformStore<TPropGroups>(device, blocks): UniformStore<TPropGroups>

Defined in: modules/core/src/portable/uniform-store.ts:72

Creates a new UniformStore for the supplied device and block definitions.

Parameters​

device​

Device

blocks​

UniformStoreBlocks<TPropGroups>

Returns​

UniformStore<TPropGroups>

Properties​

device​

readonly device: Device

Defined in: modules/core/src/portable/uniform-store.ts:59

Device used to infer layout and allocate buffers.


shaderBlockLayouts​

shaderBlockLayouts: Map<keyof TPropGroups, ShaderBlockLayout>

Defined in: modules/core/src/portable/uniform-store.ts:63

Flattened layout metadata for each block.


shaderBlockWriters​

shaderBlockWriters: Map<keyof TPropGroups, ShaderBlockWriter>

Defined in: modules/core/src/portable/uniform-store.ts:65

Serializers for block-backed uniform data.


uniformBlocks​

uniformBlocks: Map<keyof TPropGroups, UniformBlock<Record<string, UniformValue>>>

Defined in: modules/core/src/portable/uniform-store.ts:61

Stores the uniform values for each uniform block


uniformBuffers​

uniformBuffers: Map<keyof TPropGroups, Buffer>

Defined in: modules/core/src/portable/uniform-store.ts:67

Actual buffer for the blocks

Methods​

createUniformBuffer()​

createUniformBuffer(uniformBufferName, uniforms?): Buffer

Defined in: modules/core/src/portable/uniform-store.ts:153

Creates an unmanaged uniform buffer initialized with the current or supplied values.

Parameters​

uniformBufferName​

keyof TPropGroups

uniforms?​

Partial<{ [group in string | number | symbol]: Partial<TPropGroups[group]> }>

Returns​

Buffer


destroy()​

destroy(): void

Defined in: modules/core/src/portable/uniform-store.ts:94

Destroy any managed uniform buffers

Returns​

void


getManagedUniformBuffer()​

getManagedUniformBuffer(uniformBufferName): Buffer

Defined in: modules/core/src/portable/uniform-store.ts:172

Returns the managed uniform buffer for the named block.

Parameters​

uniformBufferName​

keyof TPropGroups

Returns​

Buffer


getUniformBufferByteLength()​

getUniformBufferByteLength(uniformBufferName): number

Defined in: modules/core/src/portable/uniform-store.ts:133

Returns the allocation size for the named uniform buffer.

This may exceed the packed layout size because minimum buffer-size policy is applied at the store layer.

Parameters​

uniformBufferName​

keyof TPropGroups

Returns​

number


getUniformBufferData()​

getUniformBufferData(uniformBufferName): Uint8Array

Defined in: modules/core/src/portable/uniform-store.ts:144

Returns packed binary data that can be uploaded to the named uniform buffer.

The returned view length matches the packed block size and is not padded to the store's minimum allocation size.

Parameters​

uniformBufferName​

keyof TPropGroups

Returns​

Uint8Array


setUniforms()​

setUniforms(uniforms, commandEncoder?): void

Defined in: modules/core/src/portable/uniform-store.ts:109

Set uniforms

Makes all group properties partial and eagerly propagates changes to any managed GPU buffers.

Parameters​

uniforms​

Partial<{ [group in keyof TPropGroups]: Partial<TPropGroups[group]> }>

commandEncoder?​

CommandEncoder

Optional encoder used to order managed uniform uploads with later GPU work in the same submission.

Returns​

void


updateUniformBuffer()​

updateUniformBuffer(uniformBufferName, commandEncoder?): string | false

Defined in: modules/core/src/portable/uniform-store.ts:212

Updates one managed uniform buffer if its corresponding block is dirty.

Parameters​

uniformBufferName​

keyof TPropGroups

commandEncoder?​

CommandEncoder

Optional encoder used to record the upload instead of writing the buffer immediately.

Returns​

string | false

The redraw reason for the update, or false if no write occurred.


updateUniformBuffers()​

updateUniformBuffers(commandEncoder?): string | false

Defined in: modules/core/src/portable/uniform-store.ts:193

Updates every managed uniform buffer whose source uniforms have changed.

Parameters​

commandEncoder?​

CommandEncoder

Optional encoder used to record ordered uploads for changed uniform buffers.

Returns​

string | false

The first redraw reason encountered, or false if nothing changed.