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
blocks
UniformStoreBlocks<TPropGroups>
Returns
UniformStore<TPropGroups>
Properties
device
readonlydevice:Device
Defined in: modules/core/src/portable/uniform-store.ts:59
Device used to infer layout and allocate buffers.
shaderBlockLayouts
shaderBlockLayouts:
Map<keyofTPropGroups,ShaderBlockLayout>
Defined in: modules/core/src/portable/uniform-store.ts:63
Flattened layout metadata for each block.
shaderBlockWriters
shaderBlockWriters:
Map<keyofTPropGroups,ShaderBlockWriter>
Defined in: modules/core/src/portable/uniform-store.ts:65
Serializers for block-backed uniform data.
uniformBlocks
uniformBlocks:
Map<keyofTPropGroups,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<keyofTPropGroups,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
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
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?
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?
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?
Optional encoder used to record ordered uploads for changed uniform buffers.
Returns
string | false
The first redraw reason encountered, or false if nothing changed.