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://imgur.com/a/VIWPK is my test shape after one sample/pixel) instead of regular grain. Is there any way to change that?

  • $\begingroup$ 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 $\endgroup$ – Sebastián Mestre Jan 7 '18 at 8:16
  • $\begingroup$ It appears to be working as designed. If you want smooth edges in that situation, you have to use supersampling. $\endgroup$ – Dan Hulme Jan 7 '18 at 10:37
  • $\begingroup$ @Sebastian Mmmm...the image still ends up tattered, just with marginally smoother edges. I'm hoping for actual visual noise around the sphere's border. $\endgroup$ – Paul Ferris Jan 7 '18 at 10:51
  • $\begingroup$ @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? $\endgroup$ – Paul Ferris Jan 7 '18 at 10:53

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.


Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.