Object Shaderfx Move Up
Order matters in an effect stack
- BPY_OBJ
- BPY_OBJ
Shader effects on a Grease Pencil object aren't a list, they're a stack - and stack order changes what you see. A Glow applied above an Outline reads differently than the same Glow applied below it. Object Shaderfx Move Up is the node equivalent of grabbing an effect in Blender's effect panel and nudging it one slot toward the top.
It wraps bpy.ops.object.shaderfx_move_up. If you've used Avatar Graph's cousin nodes - Object_ShaderfxMoveDown, Object_ShaderfxMoveToIndex - you already know the shape of this one; it's the "previous" button in the family.
How it works
Like every Object_* node in this pack, this is an auto-generated thin wrapper around a Blender operator. The pack enumerates bpy.ops.object.*, mints a node class per entry, and at runtime sets your incoming BPY_OBJ as the active object, runs the operator, then passes the object straight through unchanged. The output is the same BPY_OBJ you fed in - these nodes are meant to sit mid-chain, not terminate a graph.
The inputs that matter
Only two:
BPY_OBJ- the object whose effect stack you're reordering.shaderfx- a string naming the effect to move up. Must match an effect actually on the object, case-sensitively.
Nothing else. No strength, no blend mode, no frame range. It's a pure reorder.
Output is one BPY_OBJ, unchanged, ready to feed the next node.
Install
Standard Avatar Graph install - the whole pack shares one repo, so if you already have other Object_* nodes working you're done. ComfyUI Manager: search Avatar Graph, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
Be aware the pack pins bpy==3.6.0, which means your Python needs to be 3.10 - bpy ships wheels for that version specifically, and the README suggests a conda create --name comfyui python=3.10 environment. First launch also downloads the SAM checkpoint (~2.5 GB) and MediaPipe landmarkers regardless of whether you'll ever use them.
Common issues
The move silently does nothing if shaderfx doesn't match an effect on the object - Blender just logs a warning. And there's no visual feedback in ComfyUI itself: the effect stack lives inside the embedded Blender scene, so you confirm the change by checking the result later in the pipeline or by exporting the avatar. That shared, stateful scene is the other gotcha: reordering is a persistent mutation, so if a rerun behaves differently than the first run, accumulated state is usually why.
Reordering effects is fiddly work, and honestly it's not something you'll touch for a basic eye-blink avatar. Reach for it when your character has layered toon FX and one effect is stomping on another.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| shaderfxopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |