API

Interface Sprite2DLayerOptions

Options accepted by createSprite2DLayer.

interface Sprite2DLayerOptions {
    blendMode?: SpriteBlendDescriptor;
    capacity?: number;
    customShader?: Sprite2DCustomShader;
    depth?: Sprite2DDepthMode;
    layerZ?: number;
    opacity?: number;
    order?: number;
    pivot?: [number, number];
    view?: Partial<Sprite2DView>;
    visible?: boolean;
}
Index
capacity?: number
customShader?: Sprite2DCustomShader

Opt-in per-layer custom fragment shader (see createSprite2DCustomShader). Works on both pure-2D (depth: "none") layers drawn by a SpriteRenderer and depth-hosted (depth: "test" | "test-write") layers. Drives procedural effects (animated sky, clouds, water / heat shimmer, twinkle, vignette) from a built-in fx.time clock plus an optional fx.params vec4 set via setSprite2DShaderParams.

layerZ?: number

Default NDC depth (0 = near, 1 = far) for sprites added to this layer when their Sprite2DProps.z is omitted. Only meaningful for depth: "test" | "test-write" layers (depth-hosted sprites added to a SceneContext via addDepthHostedSpriteLayer).

Depth-hosted layers store one Z per sprite (slot [13] of their 14-float instance buffer), so a single layer can mix sprites at different depths — e.g. one in front of a box, one behind it. Pure-2D layers (depth: "none") use the 13-float HUD layout and carry no Z slot. Defaults to 0.5. Mutating layer.layerZ after sprites have been added does not retroactively change them; it only affects sprites added afterwards. To move an existing depth-hosted sprite, call updateSprite2DIndex(layer, idx, { z: … }).

opacity?: number
order?: number
pivot?: [number, number]

Layer-wide rotation / scaling pivot in normalised sprite-local space ([0,0] = top-left, [0.5, 0.5] = center, [1,1] = bottom-right). The pivot point of every sprite in the layer lands at its positionPx and is the center of rotation. Defaults to [0.5, 0.5] (center) to match Babylon.js sprite behavior. Per-sprite / per-frame pivot is a future PR — most 2D HUD layers want one uniform pivot anyway.

view?: Partial<Sprite2DView>
visible?: boolean