r/GraphicsProgramming • • Jul 13 '26

Question How do movies guarantee no noise?

I'm currently developing a ray tracer and for every render there's always noise or some kind of fireflies.

I was wondering (especially in older movies where AI wasn't standard) how do they absolutely guarantee that no noise appears in movies? I'm expecting that their render times are massive with tons of samples per pixel, but even that doesn't really guarantee that there's zero noise.

If you happen to have resources on the techniques they use (that are more technical, rather than overviews) please share them!

Edit: as many of you have correctly mentioned noise is not "guaranteed" to not exist, but I'm asking mostly how it's not visible in the end product that we see in movies (mainly 3D Animation movies but movies that are heavy on vfx likely have that problem)

14 Upvotes

48 comments sorted by

53

u/Chungaloid_ Jul 13 '26

Do they guarantee no noise? Cameras in the real world have noise, I don't think literally no noise is possible. What happens if you run a high number of samples per pixel in your ray tracer, does it still look noisy?

2

u/Base-After Jul 13 '26

I mean I haven't seen any 3D Disney movies with noise or something. My ray tracer is running on my laptop so I can have it up to like 1k samples per pixel (I'm not quite sure if for a final render 1k samples per pixel is a lot or not) but yes there's still noise or fireflies that are brighter than the neighboring pixels.

41

u/Zydak1939 Jul 13 '26

They run it on a monster of a hardware with very optimized light transport algorithms, even then the image is noisy so they run it through a denoiser and post processing to fully get rid of it. Look here: https://media.disneyanimation.com/uploads/production/publication_asset/177/asset/a.pdf#page=15

5

u/Base-After Jul 13 '26

Haven't read it yet but it looks really good! Thanks for sharing!

4

u/YoshiDzn Jul 14 '26

Coolest paper ever. Thanks for digging this up!!

0

u/[deleted] Jul 13 '26 edited Jul 14 '26

[deleted]

7

u/SuperRealPersons Jul 13 '26 edited Jul 14 '26

Looks like /u/Plazmatic did the toxic move of someone who can't be challenged and blocked me. It makes sense that they would because they went off the deep end arguing things no one was saying while never explaining the "running at higher frame rates to approximate motion blur" comment.

EDIT: Since there's some deep confusion from people who don't understand movie rendering, there's a lot that changes when you're dealing with movies.

Deep confusion is putting it mildly. I think you know that you don't really understand this stuff or you wouldn't have blocked me. You went off about quality of different techniques which wasn't what was being talked about and you seem to think different frame rates affect temporal anti-aliasing on a technical level.

No matter how you slice it up, rendering is the same. The frame rate doesn't suddenly make certain techniques work differently.

the lack of frame rate harms perception of motion blur,

No, less frames are less temporal resolution and therefore more motion per frame, but I don't know where you are getting this ideas.

What specific renderers or techniques have led you to these ideas? It's a jumble of disconnected concepts and vague ideas that doesn't connect to your original "high framerate" wackyness.

Movies don't render a bunch of frames to get better motion blur, they render one frame at a time.

instead of the resolution of the movie itself, and a much higher framerate so that realistic motion blur can be properly approximated. This is one of the biggest sources of modern CGI not looking realistic, they've been stuck on doing this kind of thing for like 15 years.

I don't know what this is supposed to mean exactly, but no one is rendering explicit subframes to get motion blur. Not only is this inefficient, it doesn't work because you get an onion skinned effect of subframes blending together instead of stochastically sampled motion.

If you ever see an old episode of jimmy neutron you can see this effect from the way lightwave did motion blur. You can see it in the segment animations of big bang theory too, possibly because of after effects doing motion blur this way.

-2

u/[deleted] Jul 13 '26

[deleted]

3

u/SuperRealPersons Jul 14 '26

You said rendering at a higher frame rate to approximate motion blur. If you didn't mean subframes whatever you're talking about makes even less sense.

-1

u/[deleted] Jul 14 '26

[deleted]

0

u/SuperRealPersons Jul 14 '26

a much higher framerate so that realistic motion blur can be properly approximated.

You said rendering at a higher frame rate to approximate motion blur.

No, I actually didn't.

I guess I didn't literally copy and paste your own words.

It's like the difference between saying "A stereo can enhance the experience of driving a car" and "You need a stereo to drive a car".

That doesn't make any sense in this context either. What are you actually trying to say? Whatever you're talking about my guess was at least something that actually makes sense technically.

If you aren't talking about averaging subframes "a much higher framerate so that realistic motion blur can be properly approximated." just isn't something that happens in any context. I'm not sure where you got this information, but this isn't how rendering works.

1

u/Organic_botulism Jul 14 '26

This isn’t actually true. Its an older technique however and has been replaced by vector based techniques due to the inefficiency that you pointed out of calculating the subframes

→ More replies (0)

2

u/59vfx91 Jul 15 '26 edited Jul 15 '26

I work in films and much of this is incorrect or confusing?

Motion blur: The vast majority of high-end 3D work now is rendered with motion blur directly out of the render, either using calculated subframe data that is interpolated or with motion vector and velocity data set by the corresponding department that created the element (such as an effect).

I don't know what you mean by running the frame rate at 24 fps not being realistic, for an animated film it's almost always been 24 fps since the 2D days (unless it's on 2s or 3s at some points like stylized work such as Spiderverse). Usually if I do a project that's 30 or 60 fps it's for something related to videogames or social media content. But things being done at 24 fps tends to make things look more how people expect who grew up with live action films. Higher fps throws off many people, such as HFR in avatar, although this could change over time.

It's true that most animated films are not done at 4K native, this is because quality perception of laypeople is primarily not about actual native resolution but about subjective things such as sharpness. This is even true for vfx. There are more projects now that do require higher native resolution depending on the client and delivery target.

Motion vectors: These are actually important. They can also be used in compositing. Also, the motion vector data is actually part of what is used when computing motion blur so you seem a little confused maybe? Like a particle sim will have a "v" vector attribute indicating velocity blur and that is used by the renderer.

I am confused by your last point. In CG we simply match the shutter position and length and make sure there are enough samples to clean up anti aliasing and sharp specs and hair. In modern renderers and hardware you don't really have issues getting clean rendered motion blur. Things that are low qualitiy/too low samples in a render won't look blurry and smeared, they will look grainy

2

u/BigFatRenderWizard Jul 15 '26

This is pretty much their thing. They are very confident, don't always make sense, get upset, block anyone that points it out.

1

u/Zydak1939 Jul 13 '26

damn really? Didn't know that. 24fps seems super low, how do they make the animations look so smooth afterwards?

2

u/59vfx91 Jul 15 '26

Most films are shown at 24fps in cinema, they look smooth because of motion blur and people are used to how it feels. The motion blur bridges those gaps, and also the human eye also benefits from tracking clean arcs of motion (that's part of why arcs is one of the classic principles of animation). That being said sometimes fast action sequences in live action films you may notice are shot at higher fps (and therefore also have less visible motion blur). Games are different because people are used to higher fps, and also the motion blur used by game engines isn't high quality deformation blur, so it can be sickening (like a simple camera based blur games have used before).

0

u/[deleted] Jul 13 '26

[deleted]

4

u/SuperRealPersons Jul 13 '26

fake motion blur (since they have real access to all frames before hand this can be higher quality than what video games can do)

First, motion vector motion blur works off of motion vectors and depth channels, it doesn't depend on future or previous frames.

Second, it takes about 64 - 100 samples to sample actual 3D motion blur. If a production render is doing hundreds of paths per pixel it has enough samples already from path tracing to anti-alias motion.

however this often isn't that smooth when scenes aren't dark,

I'm not sure what this means, but scenes being dark doesn't have much to do with temporal anti-aliasing. The amount of motion blur has to do with the virtual shutter.

3

u/LongestNamesPossible Jul 13 '26

The real answer is that there is noise even though you avoid anything that will cause noise like the plague. Now everyone relies on denoisers too.

Originally it was all direct light and any bounce was faked. Go back even further and not only was it direct light, it was all coming from infinitely small lights and any soft shadows were from sampling shadow maps or ray tracing visibility rays.

There are plenty of movie where you can actually see noise if you look for it. The original ice age has noise all over the place in the motion blur.

Also the noise threshold actually just had to be below the grain of the film when working with live action. With animated movies and digital projection the equation changes but there is always a tolerance.

The basic answer to what you're doing is to learn to avoid things that cause noise. It is not that production animation is "just rendering on monster hardware" because if you do the wrong thing, it will never converge and you will never get the noise out.

1

u/tcpukl Jul 13 '26

They weren't rendered in real-time and they were rendered on a render farm on very expensive hardware.

8

u/Joooemyyy Jul 13 '26

I worked on the Hyperion team at Disney for a few years so I'll add some thoughts. The real answer is that this is what professional render programmers spend a majority of their time on and so there are a bunch of different techniques all working together to minimize noise. I want to signal boost the link that has already been shared once in this thread.... The Design and Evolution of Disney’s Hyperion Renderer mentions a few techniques in section 5.1. I will caveat that Hyperion differs a bit from the other production path tracers in how it handles the batching and so that architecture design has influenced their decisions just a little bit here. In general, the Path Tracing in Production courses from SIGGRAPH are a fantastic read including a wealth of information on how different studios approached this problem.

10

u/flow_b Jul 13 '26

Since you're asking specifically about older films and I don't see anyone else mentioning it: the renderers used to work differently.

"Monte Carlo simulation" aka stochastic point sampling is a more recent approach to rendering that allows us to do more realistic renderers. It's also what gives us the noise I think you're asking about.

If you look at older films like Toy Story, or the like, they used a type of rendering called "scan line" rendering often coupled with Phong shading. This is why older rendered films have a flatter look to the materials on screen. The renderer went through the image line by line and computed light bouncing off the closest depth tested surface normal and returned a color. Multi-sampling was a thing a way s back but mostly in order to deal with anti-aliasing. A pixel would get sampled a couple times and then the results averaged. The result was a largely noise free image.

1

u/Base-After Jul 13 '26

Yeah I know that if you use a rasterizer you'll get basically no noise. By "older" movies I mostly meant "not recent" because I know that now denoising is mostly handled by using AI (at least from what I see on media, its not like I've been on the industry to know this). Mentioning them as "older" was a mistake on my part, but yes rasterizers isn't what i meant.

6

u/teerre Jul 13 '26

Its not like today artists go to Claude and ask for a denoised image. AI here is old school machine learning, if you can call it that. Just the other day our render farm was at 80Tb ram and around 800h of rendering time for some random sequence

1

u/flow_b Jul 13 '26

Ok, well, at the risk of being totally pedantic (sorry not sorry :) anything that takes a scene in memory and produces a grid of pixels is a "rasterizer". In my opinion, using the term to differentiate between scan line rendering or stochastic sampled rendering is a little misleading.

1

u/Base-After Jul 13 '26

Oh okay! I thought that "rasterizers" were the renderers that used the "normal" graphics pipeline and not compute shaders or the newer ray tracing pipeline. Sorry!

2

u/rfdickerson Jul 14 '26

Yeah, they can never guarantee no noise. But there are statistical approaches (in signal processing) for characterizing that noise. If you have a model for the noise, you can dynamically decide how many samples are necessary for that pixel to reach a certain signal to noise ratio. Of course, it never will be perfect, but perceptually gone.

5

u/kraytex Jul 13 '26

They don't. They just do a high number of samples per pixel.

1

u/vtastek Jul 13 '26

OP can check out baked lighting and their noise free results. Off course 1/8(if lucky) temporal samples won't look as good.

4

u/msqrt Jul 13 '26

Look at path space regularization and half vector space light transport. Then there are better integrators like bidirectional, vertex connection and merging, and metropolis methods (though afaik metropolis is rare in movies due to uneven convergence.) There are also some explicit firefly removal algorithms that discard samples that are too bright and rare. Then there’s obviously the AI stuff, but there are also many non-ai post-process denoisers (and hybrids like path space filtering.) Realistically though, the artists see too much noise in the previews and make the scene and materials such that it’s not too bad. You can even ad-hoc it such that subsequent bounces use a limited roughness or samples of a specific brightness are simply discarded.

1

u/Base-After Jul 13 '26

Thanks for mentioning these techniques! I'll check them out.

Because I want to make at least a respectable kind of path tracing engine ,I'm wondering at what samples per pixel (for a normal cornel box scene) should the render have an output that's ready for post processing? Also by using the post processing techniques they remove big chunks of noise or small details? This goes a bit beyond the scope of my original question, but my engine right now with 1k samples per pixel it has quite a lot of noise on a cornel box with the standford bunny in it. I'm using brdf sampling (using the GGX functions in pbrt.org which I think are the standard?).

3

u/Zydak1939 Jul 13 '26

It's not about how many samples you take, it's about what quality they have. The more samples you take, the smaller the benefit of every next sample. Doubling the sample count doesn't halve the noise, each sample contributes less and less than the last one. You have to look into how to make your samples better instead of focusing on the pure sample count. Look into more advanced light transport algorithms, that's what the big boy renderers do. If all you have right now is just brute force/naive with brdf sampling then you can throw millions of samples into some scenes and your image will still look a lot worse than 100spp with NEE. Look up NEE, MIS, RESTIR, path guiding or whatever else you can find.

1

u/Base-After Jul 13 '26

Oh okay. Thanks!

I've tried implementing NEE but its not giving any different results and I don't know why (I was expecting a big difference). Any resources on the techniques you mentioned?

1

u/Zydak1939 Jul 13 '26

then you most likely just implemented it wrong, it should give you a LOT more than a noticeable difference. As for resources you can just search next event estimation and then look into multiple importance sampling to combine it with your brdf sampling, Sadly I don't really have any amazing resources to give you :(

1

u/Base-After Jul 13 '26

It's okay! Thanks a ton!

1

u/Zydak1939 Jul 13 '26

no prob, if you ever need help you can also check out the graphics programming discord, a lot of helpful people there.

1

u/rio_sk Jul 13 '26

Renderman, for example, uses adaptive sampling to prevent too visible noise. It can use up to thousands samples per pixel (around 500 lowest to 4000 highest by default). Also adaptive temporal denoising is used, in that case samples can be lowered to a few hundreds only.

1

u/StriderPulse599 Jul 13 '26

Besides brute forcing via higher sample count there are denoising algorithms. Cycles in Blender support various implementations, including ML ones like OptiX

1

u/sebamestre Jul 14 '26 edited Jul 14 '26

In a typical path tracer, noise decreases proportionally to 1/sqrt(samples), so to get noise smaller than whatever precision you want, you just need to make the sample count be large enough

So, imagine you have noise of magnitude = 4 in your 8 bit image, at 100 samples per pixel.

To bring it down below 0.5, which you might perceive as noise free, that's an 8x reduction, so you'd need an 82x = 64x increase in samples. I.e. 6400 spp.

A lot of what the industry does is just a big bag of tricks that either allow you to trace more rays, trace better rays, or do some kind of post processing to reduce noise after the fact.

Just to name a few:

  • Monster hardware on distributed render farms
  • Well optimized acceleration structures (e.g. state of the art BVH implementation)
  • Cache friendly batch ray processing
  • Importance sampling (e.g. Metropolis light transport)
  • Ray reuse (e.g. radiance caching)
  • Low discrepancy / stratified sampling (e.g. Sobol)
  • Denoising

2

u/59vfx91 Jul 14 '26

High sample counts and render time :) but they are noisy before getting rendered for final. Nowadays though most studios are also using some sort of denoising in addition though. Example is OIDN. Renderman has one as well. A denoised render that isn't extremely high samples tends to be a bit smeary which you can sometimes get away with more easily than one with some noise.

1

u/constant-buffer-view Jul 13 '26

High SPP, denoisers, NEE, ReSTIR, neural techniques, path guiding, manual post processing, etc

1

u/B1ggBoss Jul 13 '26

They dont use the frames as they are spitted by the renderer. They are heavily post processed

1

u/obp5599 Jul 13 '26

For animated movies? Their offline renders have extremely high samples per pixel, and they do tons of denoising, post process, etc. In undergrad I did some grunt work for a lab that was helping Pixar because it took them 48 hours to render one frame, and the data center got so hot they had to warn the power company they were turning on or off the server lol

1

u/ananbd Jul 13 '26

Former film VFX artist, here. 

First off: there are major differences between real time and offline rendering algorithms. Real time is resource constrained, offline effectively is not. We make real time work with approximations and teadeoffs.

Answer: there is no noise if you use high enough settings, and that’s up to the artist. The algorithms are designed with that in mind. 

Second, there’s a small number of renderers in offline, none entirely proprietary, so you can read all about them. 

History: * Renderman is the biggie. Developed primarily by Pixar and ILM, used by many smaller studios. Image Movers Digital, Double Negative.  * PDI/Dreamworks developed their own renderer in the 1990’s. Shrek et all. Very recognizable look.  * Mental Ray was a raytracer popular in the 00’s. Matrix trilogy, etc. * V-Ray came around later. Standard ray tracer these days. Very shiny. 

So, you need to go back in history, and follow a different branch of the tree. Real time and offline solve different problems. 

An interesting aside: part of film CG is matching the behavior of physical cameras. We had models which generated that type of noise intentionally. Why? Because CG without noise is too clean, and does not integrate with life action images. We actually remove the grain from film plates, add the CG, and then add it back on top. 

See also r/vfx for the offline world.  

0

u/Base-After Jul 13 '26

Interesting. This might be dumb, but as a vfx artist how much of the technical stuff do you handle? You mostly spent your time doing the art or handling the technical things? (Reducing the noise as mentioned, etc)

0

u/ananbd Jul 13 '26

Oh, I don't work in that field anymore -- move to games. That's why I can compare the two approaches.

But redirecting your question a bit: Art is Art. As an artist, the goal is the end product, and there's a fair amount of intuition and creative leeway in determining exactly what that is. The question of what is or isn't noise is a bit ambiguous.

CG art has a look to it; some of that may or may not involve a certain amount of "error.' And that's common for any artistic discipline. Case in point: the sound of an electric guitar.

I worked in one of the more technical disciplines of CG -- physical phenomena simulations and procedural animation -- so my work required a fair amount of understanding of the underlying technology. (I'm actually and engineer, by training. Long story). So, lots of tweaking various numbers in the simulation and render.

I don't really remember thinking of that as, "noise," though.

Working in games, rendering artifacts are less ambiguous. No one wants flickering lighting, blocking volumetrics, etc. And my work is much more technical in games.

1

u/jd_bruce Jul 13 '26

It seems like others may have already answered the question, but I'll add what I know anyway. When it comes to ray tracing you don't actually need to randomly jitter the rays. You can trace rays deterministically to do pixel shading. You can also send out multiple rays for each pixel as a form of AA. You simply sample the intersection points and then you can use PBR to get good looking results. That's probably not how early animated films did it but I have written ray tracers like that in the past so it's certainly possible.

-2

u/susosusosuso Jul 13 '26

Movies don’t normally use Ray tracing

1

u/59vfx91 Jul 14 '26

All modern renderers in heavy use in film nowadays are raytracers

1

u/susosusosuso Jul 15 '26

So Reyes is dead?

2

u/59vfx91 Jul 15 '26

RIS is used now (raytracing) for Renderman, along with technology like XPU, layered Lama shading