Upscaled snapshots show a regular grain on flat colours #932

Closed
opened 2026-10-22 03:12:20 +00:00 by sky_line · 1 comment
Owner

A user reports a fine, fairly regular grainy pattern on solid-colour areas of snapshots larger than the window (the live jittered accumulation path from #873).

Likely causes

  1. Frozen noise seeds. While a live shot accumulates, mTaaFrame is held so the live view resumes cleanly. Any per-frame noise seeded from it (dithers, stochastic picks, sample rotations) repeats in every sample, so averaging cannot remove it.
  2. Few samples per pixel. Each sample is a raw jittered frame (TAA / FSR resolve skipped), so the noise TAA normally hides (GTAO, soft RT shadow rays, stochastic projector picks, fog / god-ray / alpha dithers) stays in, and about 4 samples per output pixel only roughly halves it.
  3. Coarse shading. Adaptive VRS (on by default from 1440p) shades low-contrast areas at 2x2; jittered samples over those blocks leave a regular pattern.

Plan

  • Give every noise source its own per-sample seed during a shot (or advance a dedicated snapshot seed) without disturbing the live view's sequence.
  • Force full-rate shading for snapshot sample frames.
  • Revisit the minimum samples per output pixel / RenderSnapshotTemporalFrames defaults.
  • Verify with a snapshot of a flat-colour wall at 2x and 4x the window, against the offscreen renderer (RenderSnapshotOffscreen 1).

Tiled rendering was considered and set aside: per-tile warm-up for the temporal passes, guard bands for screen-space effects and whole-image post would be a much larger change than fixing the samples.

A user reports a fine, fairly regular grainy pattern on solid-colour areas of snapshots larger than the window (the live jittered accumulation path from #873). ## Likely causes 1. **Frozen noise seeds.** While a live shot accumulates, `mTaaFrame` is held so the live view resumes cleanly. Any per-frame noise seeded from it (dithers, stochastic picks, sample rotations) repeats in every sample, so averaging cannot remove it. 2. **Few samples per pixel.** Each sample is a raw jittered frame (TAA / FSR resolve skipped), so the noise TAA normally hides (GTAO, soft RT shadow rays, stochastic projector picks, fog / god-ray / alpha dithers) stays in, and about 4 samples per output pixel only roughly halves it. 3. **Coarse shading.** Adaptive VRS (on by default from 1440p) shades low-contrast areas at 2x2; jittered samples over those blocks leave a regular pattern. ## Plan - Give every noise source its own per-sample seed during a shot (or advance a dedicated snapshot seed) without disturbing the live view's sequence. - Force full-rate shading for snapshot sample frames. - Revisit the minimum samples per output pixel / RenderSnapshotTemporalFrames defaults. - Verify with a snapshot of a flat-colour wall at 2x and 4x the window, against the offscreen renderer (RenderSnapshotOffscreen 1). Tiled rendering was considered and set aside: per-tile warm-up for the temporal passes, guard bands for screen-space effects and whole-image post would be a much larger change than fixing the samples.
sky_line added this to the Slipstream project 2026-10-22 03:12:20 +00:00
Author
Owner

Fixed in 1.4.1 (8abf303470). Reopen if you still see it.

Fixed in 1.4.1 (8abf303470). Reopen if you still see it.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#932
No description provided.