How to add artistic film garin?

One fad that’s very popular (in After Effects-produced videos, I think) is the addition of very clear, old-fashioned film grain and film vignettes. (By “film grain” I mean the appearance of grain on old 16mm film reels, not digital camera artifacting.) This seems to be super-popular, and one example is here in this video.

So, I would like to see of there’s a way to add this sort of film grain effect in Blender.

There is a great plug-in for GIMP that’s called FIL (for Film Imitation Lab) which perfectly synthesizes film grain, and that appears to have a “Batch” mode for generating many frames of grain. I attempted to generate a batch of those stills to overlay on my Blender Image Sequence in the VSE. However, I was unable to get the FIL settings to select the proper directory - so I think it might be a little bit rough. (But for stills FIL works perfect.)

So I hope to learn how this film grain effect can be achieved in Blender (or through GIMP’s FIL). Thanks as always.


After reading your posts at that thread, it appears that the sort of “film noise” you were speaking of adding (for the most part) was not actually film per se, but more general digital artifacting and general noise. (Although I recognize that the techniques could be, somewhat laboriously, retrofitted to generate an actual film look.) For that type of grain, there is an alternate technique shared here in this tutorial.

However, I am specifically trying to create a film (the old celluloid variety) grain look rather than general video noise. Again, you can see a sample of what I’m referring to here in this little (presumably After Effects) animation:

For stills, the aforementioned FIL plug-in for GIMP is stunningly perfect. Alas, FIL it doesn’t really work as intended for producing many frames for video.

I think that a film grain could be achieved with judicious use of animated noise textures. You should be able to recreate a variety of noise types like silver grain, hair and scratches. Generating them from texture slots would avoid needing to save a loop of rendered media. As most of these effects were just an overlayed video loop of telecined film.

Ok so I knocked up a proof of concept, however my project dimensions are a bit weird due to the old work station I am at today :frowning:

noise test.blend (449 KB)

Adding noise simulated film grain to an image can look great, but in motion the effect can fall apart. Adding film grain effect will not make a video look like old 8 or 16mm as there’s a lot more involved like cadence, jiggle, reduced frame rate etc.

The net is fall of film grain effects and overlays. Light leaks as well, it’s all hip and totally over done as you say.

Commercial products like: & may give some ideas.

There are freebies like this: which is a 35mm film scan.

But they are just dumb overlays, yes you can affect the saturation, luma mask light midtone and dark thresholds over time to give a bit of flicker, make shadows, midtones or highlights more intense through a luma mask and opacity control.

Or you could try a free, opensource script that runs on Avisynth, which in turn works on Windows and Linux via Wine. The script here: and there is a 16bit output modded version but not to complicate things.

The script actually looks at the luma levels in your video, it allows control over grain size, texture, sharpness, calm or vigourous movement, you can set luma threshold for when the grain kicks in all seperately for shadows, midtones and highlights. You can see it in motion using a tool like avspmod and adjust settings with sliders if editing scripts is tedious or via Virtualdub, then encode it into a video or just encode the grain out to video or image sequence as an overlay for Blender actualy based on the source video, then adjust opacity to suit.

So in blender nodes you could import video, seperate YCbCr to get luma plane to use as a driver for your animated grain, threshold it three times using a luma key, so you threshold a copy of luma plane for high, mids, lows from those three outputs add noise texture to suit with different settings for each, maybe light texture for highs and lows, maybe heavier texture for mids, then subtract original luma data from each so you have just the animated noise textures for H, M & L so you can reblend with varying opacity back into your 3 luma planes and then recombine YCbCr.

That way the noise is driven by the luma, the noise only affects the luma ie: greyscale not color.

Yes there are lots of exacting ways to reproduce the effect in great detail. I didn’t know about the avisynth script. You certainly could apply grain to dye layers and add gate weave, the whole lot. But as with lens flares I think people only want the suggestion of the effect. And in time people will want to recreate VHS look too. Yuck

Hey, 3PE.

I don’t understand the technique you used to (apparently) get that animated Texture as its own Strip there in the VSE. The only thing I can think of is: (1) Add the Texture to a Plane, (2) Align Plane to Camera, (3) Isolate this pairing as its own Scene, and then (4) Import this Scene Strip in the VSE.

Is this correct, or do you have a superior technique? Yours looks pretty good, I think.

(Although…I confess I’m still holding out hope that somebody will be able to get the FIL plug-in’s “Batch” option to work as intended, because that plug-in for GIMP just looks so darn natural and perfect.)

Whoa, I’ll have to learn a whole new program to get this thing down, as I don’t know Avisynth at all.

I understand what you’re saying that mere film grain isn’t a true replication of celluloid film. I mean, that’s just common sense, really. But an exaggerated, visually-obvious film grain look has become a sort of shorthand for implying, “The subject of this video is raw and real, dude.” And, of course, for kitsch-y scenes mocking old cartoons or whatever (for instance, the opening interview “film” footage in ‘The Incredibles’) it’s also very appropriate. But for somebody who’s truly trying to exactly replicate something being shot on 16mm or whatever, they have a LOT of work to do beyond film grain!

Thanks for your technical expertise and thoughts. Myself - and probably many lurkers - will bear your Avisynth plug-in in mind, for sure.

Nah just what you said. There is a .blend above the picture :slight_smile: I am also looking at a comp node arrangement too but it’s not working right although has much more flexibility.

Oh, that’s cool. That’s definitely a viable suggestion, in my opinion. I’m sure many lurkers will be employing that - probably myself included.

Hey Yellow I was wondering how to derive variable grain size, like from a screen effect (newsprint dot scale for grey scale), but splitting the 3 levels is much easier.

I guess its a matter of good enough as with the lens flare techniques, few are accurate and fewer people seem to care.

Man, I feel stupid, but my “problem” with the GIMP FIL plug-in is now solved. I just didn’t SEE the correct field!

I got an e-mail reply from the Russian man who created it, and I’m glad nobody was around to see my face because I was blushing because I feel so silly. However, I have been warned by both the plug-in writer and Rich2005 at the GIMPForums that this technique will take a LONG time. So it’s sub-optimal from a technical standpoint, even if it’s great from an aesthetic one.

So I’ll mark this thread as “SOLVED”, but by all means please feel free to offer ideas and have discussion about film grain filter techniques in Blender.

Solved already. :slight_smile: So Gimp has a batch routine to add film grain effect to an image sequence, but do you know what it looks like yet? Were you able to tweak the noise in motion or will any old thing do? :slight_smile:

No you don’t have to learn a whole new application to do it, but like your previous problems with video, knowing something like Avisynth is very useful for video processing but whatever, individuals choice.

3point, my apologies if you thought I was critizing what you put up, I wasn’t. All the best.

Yellow, not at all mate. Sorry if I come across a bit short was posting from work. Love your detailed approach.

Ah, yes, I see. Sorry, I misunderstood at first reading. Glad you got GIMP working for this!

I thought you meant film grain, not actual damage. Scratches, stains, etc… I have some great, easy techniques for that. Here’s something I did years ago in After Effects. This is an extreme example, but it’s completely manual, no plugins, so you can style the damage to exactly what you are looking for. It would be just as easy to set up in Blender as it was in After Effects.

(also, sorry for the low quality. I uploaded that almost 7 yrs ago, hahahah)

I had dabbled with creating the stuttery film, sepia toned look in Blender. Nothing too hard.

I can go into details on any of the techniques some time, if you’d be interested.

Also, the techniques the guy uses in that youtube video for adding noise directly from the footage is bad. I understand the noise is being derived directly from the source footage, so in theory, it will match perfectly, but the drawbacks are so many as to make the technique useless. First, unless your CG object is being placed over a completely flat color, you’re going to get edge artifacts, exactly like he does at the end of the tutorial. Those are bad, and there’s no easy way to remove them. Second, the intensity of the noise changes. You can see it when he changes frames. Not consistent. Third, he’s taking the greyscale output of a math node and screening it over the CG, meaning he’s getting no color information, and he’s only getting the brighter values. This is not how noise/grain works. It’s in color, it’s brighter and darker, and in fact it’s usually at different strengths on each color channel of your image. Blue grain is notoriously bad, which is one of the main reasons vfx professionals prefer greenscreens. Noise in the green channel tends to be much better. While this is an interesting technique for pulling out grain by looking at the differences between two frames (the same way a difference matte works, which is basically what’s coming out of the math node - a difference matte), it is simply not correct if you’re trying to accurately match grain or noise of some footage.

And a screeny of the nodes…

Blend file for a node approach (it renders faster than the VSE/scenes version)
Film Grain.blend (611 KB)
All noise textures are in the comp scene, VSE scene is just retained for rendering with original.


noise test.blend (589 KB)

I’m pretty sure that this “FIL” plug-in will not allow for literal tweaking of the noise in motion, but there’ll obviously be natural variation between individual frame renders. But each frame it creates (I assume) will have its own unique pattern. I haven’t yet used this for an animation, but I’ve been using it for stills for months, now, and I think that its effect is incredibly realistic and cool. I don’t know if you use GIMP at all, but if so, here’s the link to the plug-in:

Thanks for all your help, Yellow.

Wow, that looks AWESOME, 3PE. Of course…I won’t use your .Blend because I want to create all that myself!


Thanks for your contribution, as well, which also looks great. I understand your criticism of the film noise (not grain) effect offered in the earlier video, but I’m sure it’s still a viable option under many circumstances.

I don’t mind who uses it, only that more people are encouraged to try Blender out before jumping to a canned effect from another app. I am a firm believer in doing everything you can in one place!
Go Blender :wink:

P.S. I don’t believe in jack of all trades master of none, why not have it all?

Yeah, Blender is definitely going, that’s for sure!

I like that expression, by the way, “jack of all trades, master of none”. Kind of like, “Everybody surfs the web nowadays, so nobody dives into any one craft.” I’ll keep it in my back pocket to use one day!