ShaderInputs
ShaderInputs stores per-module uniform values and binding values for shader modules.
It is the glue between engine classes like Model and Computation and the uniform layouts defined by @luma.gl/shaders modules.
Usage​
import {ShaderInputs} from '@luma.gl/engine';
import {picking} from '@luma.gl/shaders';
const shaderInputs = new ShaderInputs({picking});
shaderInputs.setProps({
picking: {
isActive: true,
highlightedObjectIndex: 5
}
});
For the uniformTypes descriptor syntax that drives nested uniform handling,
see Core Shader Types.
Types​
ShaderInputsOptions​
export type ShaderInputsOptions = {
disableWarnings?: boolean;
};
Properties​
modules​
Resolved shader modules, including module dependencies.
moduleUniforms​
Per-module uniform values.
moduleBindings​
Per-module binding values.
Methods​
constructor(modules, options?)​
Creates a ShaderInputs instance for one or more shader modules.
destroy(): void​
Currently a no-op placeholder for symmetry with other engine resource managers.
setProps(props): void​
Updates one or more modules by calling each module's getUniforms() function and splitting the result into uniforms and bindings.
From v9.3
If a module declares composite uniformTypes, setProps() preserves nested
struct and array shapes at the module boundary and merges partial updates by the
declared schema.
getModules(): ShaderModule[]​
Returns the registered modules, including resolved dependencies.
addModules(modules: ShaderModule[]): void​
Registers modules after construction and resolves their dependencies before
initializing uniform and binding state. Use this when the full module set is not
known when the ShaderInputs instance is created; subsequent setProps(),
getUniformValues(), and getBindingValues() calls include the added modules.
getUniformValues(): Partial<Record<string, Record<string, UniformValue>>>​
Returns the current uniform values grouped by module.
getBindingValues(): Record<string, Binding | TextureBindingSource>​
Merges all module bindings into a single binding map suitable for a Model or Computation, including engine texture binding sources such as DynamicTexture and VideoTexture.
getDebugTable(): Record<string, Record<string, unknown>>​
Returns a table-like object that is useful with console.table() or luma logging.
Remarks​
ShaderInputsdoes not upload GPU buffers by itself. Engine classes use it together with an internalUniformStore.- Unknown module names are ignored and warn by default unless
disableWarningsis enabled. - Composite uniform values stay nested in
ShaderInputs, whileUniformStoreandShaderBlockWriterflatten them internally for packing.