Quick answer: shader_set, then shader_set_uniform_f, then draw, then shader_reset. Cache uniform handles globally.
Custom flash shader. Set uniform_f to color. Draw. No effect. Uniform was set before shader_set or after the draw.
The Fix
// Cache handle once
global.u_flash = shader_get_uniform(shd_flash, "u_flash");
// In Draw
shader_set(shd_flash);
shader_set_uniform_f(global.u_flash, 1, 0, 0, 1);
draw_self();
shader_reset();
Order matters. Cached handle avoids string lookup overhead.
Verifying
Sprite tints red. Without correct order: no tint or persistent tint between draws.
“Set, uniform, draw, reset.”
Related Issues
For draw_text color, see draw color. For tilemap cache, see tilemap.
Order. Uniform. Draw.