<p>Jitter is <em>supposed</em> to make edges more irregular; that's how it masks aliasing in the first place. I didn't realise this when I made the question, but the noise in path tracers comes from undersampled global illumination; because each sample travels in a random direction, it's possible for a visually-significant number of samples to reach unrepresentative areas (e.g. for rays at the bottom of a curve to mostly hit the walls of the curve rather than travel upward towards), and the dissonance between these and the actual image function creates the fuzzy variance you get in path-tracing renderers.</p>

<p>That sort of noise is completely different to the pseudo-one-dimensional edge variance you expect to get from ray jitter at one sample/pixel. Single-sample ray jitter essentially means pulling edges randomly closer to or further away from their actual tendency in order to hide the high-frequency patterns introduced by aliasing; it looks nothing like "fuzzy" GI noise because (at least at the single-sample scale I was thinking about when I made this question) it's one-dimensional (variance about an edge) rather than two-dimensional (variance over a surface).</p>

<p>So, this question is invalid. It assumes that jittered edges are supposed to be fuzzy (as in GI noise), but forgets that edges are one-dimensional and that the jitter can't magically expand them to two dimensions and spread them over some domain (at least, not without spreading the aliasing as well (multi-pixel jitter)). Jitter doesn't produce fuzzy noise because it isn't supposed to; <em>it's only supposed to vary the relative distance of points "on" an edge from the actual edge positions given by the image signal</em>.</p>

CC BY-SA 3.0
2018-01-13T07:04:08.723Z
2018-01-13T07:04:08.723Z
Paul Ferris
<p>I recently set up temporal super-sampling in my path-tracer, and now I'm trying to improve early samples by adding random offsets between -[PIXEL_WIDTH] and +[PIXEL_WIDTH] to each initial ray position. The jitter works <em>well enough</em> and hides obvious aliasing artifacts, but it creates tattered edges (e.g: <a href="https://i.sstatic.net/gHwaS.jpg" rel="nofollow noreferrer">https://i.sstatic.net/gHwaS.jpg</a> is my test shape after one sample/pixel) instead of regular grain. Is there any way to change that?</p>

CC BY-SA 3.0
2018-01-07T08:16:25.210Z
have you tried jittering by +- half a pixel width? this should prevent the 'sample zone' belonging to a given pixel intersecting with that of its neighbors
Sebastián Mestre
CC BY-SA 3.0
2018-01-07T10:37:24.693Z
It appears to be working as designed. If you want smooth edges in that situation, you have to use supersampling.
Dan Hulme
CC BY-SA 3.0
2018-01-07T10:51:13.147Z
@Sebastian Mmmm...the [image](https://imgur.com/a/mL9vh) still ends up tattered, just with marginally smoother edges. I'm hoping for actual visual noise around the sphere's border.
Paul Ferris
CC BY-SA 3.0
2018-01-07T10:53:41.570Z
@Dan I'm not looking for smoothness anymore; my supersampler does that after enough samples already. I was more thinking about some sort of edge fuzziness (rather than the raggedness I have at the moment) that'd gradually fade out as I caught more samples. It sounds like that isn't possible, though?
Paul Ferris
<pathtracing><antialiasing><noise>
Structural artifacts in ray jitter
Paul Ferris
# Structural artifacts in ray jitter

(Asked by: username_0 on 2018-01-07)

I recently set up temporal super-sampling in my path-tracer, and now I'm trying to improve early samples by adding random offsets between -[PIXEL\_WIDTH] and +[PIXEL\_WIDTH] to each initial ray position. The jitter works *well enough* and hides obvious aliasing artifacts, but it creates tattered edges (e.g: <https://i.sstatic.net/gHwaS.jpg> is my test shape after one sample/pixel) instead of regular grain. Is there any way to change that?

**Tags:** pathtracing, antialiasing, noise

> **Comments:**
> **username_1**: have you tried jittering by +- half a pixel width? this should prevent the 'sample zone' belonging to a given pixel intersecting with that of its neighbors  
> **username_2**: It appears to be working as designed. If you want smooth edges in that situation, you have to use supersampling.  
> **username_0**: @Sebastian Mmmm...the [image](https://imgur.com/a/mL9vh) still ends up tattered, just with marginally smoother edges. I'm hoping for actual visual noise around the sphere's border.  
> **username_0**: @Dan I'm not looking for smoothness anymore; my supersampler does that after enough samples already. I was more thinking about some sort of edge fuzziness (rather than the raggedness I have at the moment) that'd gradually fade out as I caught more samples. It sounds like that isn't possible, though?  

---

## 1 answers

### Answer by username_0 on 2018-01-13. Score: 0 | Accepted answer

Jitter is *supposed* to make edges more irregular; that's how it masks aliasing in the first place. I didn't realise this when I made the question, but the noise in path tracers comes from undersampled global illumination; because each sample travels in a random direction, it's possible for a visually-significant number of samples to reach unrepresentative areas (e.g. for rays at the bottom of a curve to mostly hit the walls of the curve rather than travel upward towards), and the dissonance between these and the actual image function creates the fuzzy variance you get in path-tracing renderers.

That sort of noise is completely different to the pseudo-one-dimensional edge variance you expect to get from ray jitter at one sample/pixel. Single-sample ray jitter essentially means pulling edges randomly closer to or further away from their actual tendency in order to hide the high-frequency patterns introduced by aliasing; it looks nothing like "fuzzy" GI noise because (at least at the single-sample scale I was thinking about when I made this question) it's one-dimensional (variance about an edge) rather than two-dimensional (variance over a surface).

So, this question is invalid. It assumes that jittered edges are supposed to be fuzzy (as in GI noise), but forgets that edges are one-dimensional and that the jitter can't magically expand them to two dimensions and spread them over some domain (at least, not without spreading the aliasing as well (multi-pixel jitter)). Jitter doesn't produce fuzzy noise because it isn't supposed to; *it's only supposed to vary the relative distance of points "on" an edge from the actual edge positions given by the image signal*.


---

