Quick answer: Apply the Noise effect to a single large object covering the visible area, not to multiple tiled sprites. Use a TiledBackground if you need it to scroll — one continuous mesh produces seamless noise. Per-tile sprites either repeat the same pattern or break at edges.

Here is how to fix Construct 3 Noise (or similar shader) effects that produce visible seams between adjacent sprites. Your wave or fog effect looks correct on a single sprite but glaringly tiled across multiple. The cause is per-sprite UV sampling: each sprite has its own 0–1 UV space, so noise restarts at each tile boundary.

The Symptom

A grid of sprites with the same Noise effect applied shows a visible repeating pattern. Adjacent edges have hard cuts. The pattern is identical on every sprite.

What Causes This

Per-sprite UV sampling. Each sprite’s UV runs 0–1 across its own bounds. Noise sampled at UV produces the same pattern on each.

Non-tileable noise function. Most procedural noise (Perlin, Simplex) is not seamless across arbitrary tile sizes. Even with world coordinates, edges differ if the noise scale does not divide tile size evenly.

Effect applied to layer vs object. Layer effects apply once across the whole layer’s visible area; object effects apply per-object with separate UV spaces.

The Fix

Step 1: Use a TiledBackground or single large sprite. Replace the grid of small sprites with one large sprite or TiledBackground covering the entire visible area. The Noise effect now operates on one continuous UV space.

Step 2: Apply Noise as a Layer effect. Right-click the layer, choose Layer Effects, and add Noise. The effect samples once across the layer’s viewport, producing seamless results regardless of how many sprites are below.

Step 3: For sprite-grid use cases, precompute a seamless texture. Generate a seamless noise PNG in an external tool (Photoshop’s Render Clouds, GIMP, or noise-generator websites). Tile the texture via a TiledBackground; no runtime effect needed.

Step 4: Use shader parameters for offset. If you must keep per-sprite effects, add an offset parameter to the noise effect that shifts each sprite’s sample point based on its position. The effect becomes pseudo-continuous:

Event: System -> Every tick
  For each Tile:
    Action: Tile -> Set effect "Noise" parameter 0 to (Tile.X / 100)
    Action: Tile -> Set effect "Noise" parameter 1 to (Tile.Y / 100)

Requires a custom Noise effect that uses parameters as an input offset.

Step 5: Animate consistently. If the noise scrolls over time, ensure all sprites use the same time value. Different time per sprite produces visible patches.

Performance Note

One large sprite with one effect runs once per frame. A grid of small sprites with per-sprite effects runs N times. The single-sprite approach is both visually correct and faster.

“Noise sampling per sprite is uneven. One large sprite or layer effect samples once. Tiles repeat.”

Related Issues

For physics impulse, see Physics Impulse. For audio policy, see Audio Without Gesture.

Layer effect or single sprite. Seamless noise once. Tile boundaries gone.