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.