Core Pack
UE5 is the source of truth here. Keep the graph readable first, then branch into project-specific versions only when the base is proven.
UE5 / Core Pack
Reusable UV animation logic for panners, rotation, polar flow, directional streaks, and time-based pulses.
UE5 is the source of truth here. Keep the graph readable first, then branch into project-specific versions only when the base is proven.
01
02
03
Check the motion in grayscale before color. Timing problems are much easier to see when the texture is not glowing yet.
Why: motion should be readable from the gameplay camera, not only inside the material preview.
Keep the center, radius, and edge width controllable. Circular effects fall apart quickly when those values are buried.
Why: radial signals are reused across portals, shields, runes, and hit pulses.
Keep the center, radius, and edge width controllable. Circular effects fall apart quickly when those values are buried.
Why: radial signals are reused across portals, shields, runes, and hit pulses.
Preview this signal alone and make sure its range is useful before it drives color, opacity, or emission.
Why: a clean mask makes later tuning feel deliberate instead of guesswork.
Check the motion in grayscale before color. Timing problems are much easier to see when the texture is not glowing yet.
Why: motion should be readable from the gameplay camera, not only inside the material preview.
04
Get a clean black-and-white read first; color, glow, and distortion should only support that read.
Every exposed value should answer a real art question: how fast, how wide, how bright, how soft.
05
float shaped = smoothstep(threshold - softness, threshold + softness, inputMask);
float edge = shaped * (1.0 - smoothstep(edgeWidth, edgeWidth + softness, abs(inputMask - threshold)));
return float2(shaped, edge);06
07