Quick answer: Don’t override VERTEX assignment. Modify (VERTEX += offset) after default skinning.

Animated character with custom dissolve shader. Pose looks wrong. Vertex shader replaced VERTEX from scratch.

The Fix

shader_type spatial;

void vertex() {
    // VERTEX comes pre-skinned by Godot
    VERTEX += NORMAL * sin(TIME * 2.0) * 0.02;
    // add wave on top of skinning
}

Modify rather than overwrite. Built-in skinning produces VERTEX in object space; your offset adds.

Verifying

Animation pose intact + extra wave. Without addition: pose lost.

“Add to VERTEX. Skinning preserved.”

Related Issues

For shader UV flip, see UV flip. For shader billboard, see billboard.

+= keeps skin. Add wave.