MaterialEffect
Defined in: packages/three-flatland/src/materials/MaterialEffect.ts:184
Base class for per-sprite shader effects.
Each MaterialEffect subclass defines:
effectName— unique name for the effecteffectSchema— per-sprite data schema with default valuesbuildNode()— TSL node builder for the effect shader
Each MaterialEffect instance:
- Has typed property accessors for each schema field
- Uses the snapshot pattern for pre-enrollment staging
- Dual-writes to ECS traits and packed GPU buffers
Examples
Section titled “Examples”class DissolveEffect extends MaterialEffect { static readonly effectName = 'dissolve' static readonly effectSchema = { progress: 0 } as const declare progress: number
static buildNode({ inputColor, attrs }: EffectNodeContext) { return mix(inputColor, vec4(0, 0, 0, 0), attrs.progress) }}const DissolveEffect = createMaterialEffect({ name: 'dissolve', schema: { progress: 0 }, node({ inputColor, attrs }) { return mix(inputColor, vec4(0, 0, 0, 0), attrs.progress) },})Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new MaterialEffect():
MaterialEffect
Defined in: packages/three-flatland/src/materials/MaterialEffect.ts:326
Returns
Section titled “Returns”MaterialEffect
Properties
Section titled “Properties”
readonlyid:number
Defined in: packages/three-flatland/src/materials/MaterialEffect.ts:295
Unique instance ID (like Three.js object ids).
readonlyname:string
Defined in: packages/three-flatland/src/materials/MaterialEffect.ts:298
Effect name (from static).
_nextId
Section titled “_nextId”
static_nextId:number=0
Defined in: packages/three-flatland/src/materials/MaterialEffect.ts:292
Auto-incrementing unique ID for debugging.
channelNode
Section titled “channelNode”
staticchannelNode: ((channelName,context) =>Node) |null=null
Defined in: packages/three-flatland/src/materials/MaterialEffect.ts:196
Channel node builder — produces TSL nodes for declared channels.
effectName
Section titled “effectName”
readonlystaticeffectName:string
Defined in: packages/three-flatland/src/materials/MaterialEffect.ts:190
Unique effect name. Must be overridden by subclass.
effectSchema
Section titled “effectSchema”
readonlystaticeffectSchema:EffectSchema
Defined in: packages/three-flatland/src/materials/MaterialEffect.ts:192
Per-sprite data schema with default values. Must be overridden by subclass.
provides
Section titled “provides”
readonlystaticprovides: readonly keyofChannelNodeMap[] =[]
Defined in: packages/three-flatland/src/materials/MaterialEffect.ts:194
Per-fragment channels this effect provides (e.g., [‘normal’]).
Methods
Section titled “Methods”buildNode()
Section titled “buildNode()”
staticbuildNode(_context):Node<"vec4">
Defined in: packages/three-flatland/src/materials/MaterialEffect.ts:215
TSL node builder. Must be overridden by subclass (class-based path). The factory path sets this via static assignment.
Parameters
Section titled “Parameters”_context
Section titled “_context”Returns
Section titled “Returns”Node <"vec4">