registerShader

Make a user-defined shader findable by its name, so preset JSON can reference it as type: 'Halo'.

registerShader<T extends GpuShaderDefinition<any>>(definition: T): T

Import registerShader from shaders/std.

Returns the definition, so it can wrap defineShader inline. Registering the same object again does nothing. A different definition under a taken name replaces it (live editing, hot reload) and notifies onShaderRegistered listeners. <CustomShader> calls this for you on mount; createShader(canvas, preset, {components: [Halo]}) is the other way to make a name resolvable without registering globally.

Parameters

NameTypeNotes
definitionT

Example

import {createShader} from 'shaders/js'
import {Halo} from './halo'

registerShader(Halo)
const shader = await createShader(canvas, {components: [{type: 'Halo', props: {bands: 6}}]})

See also

  • defineShader — Define a shader component from a plain object: its props, and one field that says what it draws.
  • unregisterShader — Forget a user-defined shader by name.
  • getRegisteredShader — Look up a user-defined shader by name.
  • onShaderRegistered — Be told when a user-defined shader is registered, replaced or removed.