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
| Name | Type | Notes |
|---|---|---|
definition | T |
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.