This article is a written companion to my YouTube tutorial "Adding Film Grain in DaVinci Resolve". If you learn better from video, I highly recommend you check the link out as I walk you through the entire process of regraining. Here I take the luxury of the article format to expand on concepts behind grain rather than the specific mechanics of how to achieve it.
Please note, this is not about adding film artifacts (scratches, leaks, dust, jumps, etc.) though many of these techniques apply just the same.
Before we dig into the why and how, it's a good idea to step back for a minute and examine what exactly film grain is. This is for those of you who have never heard the whir of a film camera or had the excitement tempered by trepidation that is looking through your rolls back fresh from the developer.
To put it simply, film grain is what makes photography possible. When you expose a strip of film to light, what you're doing is causing a chemical reaction in very tiny (smaller than you can see) particles of metallic silver and their dye couplers. After processing, the silver is removed and you're left with just the color dyes which have a tendency to clump - what we see as grain. The way these granules clump (how close, how large, how many) give different film stocks and processing methods much of their unique look.
It should be noted that digital video has image sensor noise which can look visually similar to grain (especially when tuned for it like in the Arri Alexa), but is the result of a very different process and tends to occur more in specific color channels instead of the more even wash that is common with organic film grain.
It may seem counter intuitive at first. Why, when I've taken time to shoot video with as little noise as possible or gone and denoised all my footage, would I want to add grain back in? It's a good question, but there are a few great reasons that you should consider adding grain to all your projects.
Grain is simply pretty.
Here's a shot I took with Kodak Portra 400 pushed just a little bit. The grain gives the image a physical texture that adds depth and helps images "pop" off the screen. Further, by manipulating how intense the grain is you can suggest different moods (gritty, beauty, etc) helping you to tell your story.
Grain fixes "plastic looking" footage which denoising can cause.
When you've got very noisy footage, you may require very strong denoising. Plugins like Neat Video can be extremely accurate in only removing noise, but the effect often tends to smooth out the image losing some detail - especially in skin (pores, hairs, etc) which results in what is known as "plastic" footage.
Adding a controlled amount of film grain back into your image is a great way to get rid of this overly smooth footage. Take a look at the example below:
You can see the image was originally very dark. When the levels were brought up to match the other shots, a lot of ugly chroma noise was revealed. This noise required heavy denoising (using Neat Video v4 OFX) which successfully removed the sensor noise, but smoothed out the image resulting in a digital, "plastic" looking face.
When adding the grain back in, our brain automatically fills in the missing information as "pores" and other details. The plastic effect is gone and we are soundly out of the uncanny valley of digital noise reduction.
Grain helps to reduce color banding when compressing.
This is one of the best reasons to use grain in your projects - especially if it is destined for a lossy web upload. Below is a gradient I created from yellow to blue. The top part of the gradient has a light grain applied while the bottom section is untouched. I've saved it in a low quality format in order to exaggerate the effects of color banding as you might find when compressing digital video.
As you can immediately see, the addition of the grain has effectively erased the banding that occurred from compression. This effect is exceptional.
The process by which grain achieves this is called dithering and is well known within the compression industry. Dithering works by exploiting the way your brain perceives differences in luma and chroma by adding additional levels of perceived shading where none actually exist. This blending between values smooths out the image and ensures an even transition. This is how gifs compress images, how your monitor displays colors, how your four color inkjet printer prints full color, and on and on.
Even better, the random noise helps to prevent video compression schemes from saving data on a particular area because the luma/chroma is identical fame to frame.
Grain can increase the perceived sharpness of your image.
It may seem counter intuitive, but the same effect that allows dithering to increase the perceived bit depth of the image (eliminating banding) also affects the perceived sharpness. The trick here is something called acutance. Resolution (which cannot be altered after capture) and acutance combine to form the perceived sharpness of an image. Acutance is the difference in luma (and to a lesser extent chroma) values on edges. Increasing the contrast along edges increases the perceived sharpness of the video (though it's easy to turn it too far as anyone who has messed with Lightroom's "clarity" slider or DaVinci's "midtone details" option can tell you).
Larger, sharper grain (coarser) has a tendency to exaggerate acutance thus making the image look sharper. If you want to soften the image without blurring, you can use small, soft grain to decrease acutance. Images without grain ends up somewhere in the middle as the fine detail that coarse grain enhances with its high acutance is absent.
There are two major methods of adding grain: grain generators and grain "scans." Grain generators are fast and easy ways to customize grain shot to shot, but can cost a little bit (depending on which plugin you're using) and quite simply aren't real (though it's generally impossible to tell a difference). "Scans" can be real or generated and vary wildly in price.
If you'd like to see me go over the details of these two processes, check out my tutorial video here.
Grain Generators in DaVinci Resolve
FilmConvert has a great built in grain generator in their Resolve OFX plugin ($199). They claim to apply the grain "naturally" (meaning different luma/chroma values get different amounts of grain) which is superior to simply applying a grain overlay. More than that, the plugin gives you a very quick way to adjust the grain size (four 35mm options, super16, 16mm, super8, and 8mm) and intensity. This makes it very simple to customize the grain shot to shot (as a dark shot may need different grain than a lighter one).
Application is simple. Just apply the OFX plugin to a node (I tend to use the last one in my tree), turn film color and film curve down to 0, make sure GPU rendering is on, and then adjust grain parameters as necessary (I like 35mm 3 perf and 35-50 grain intensity). It's that simple!
One thing to note, if you are working in an ACES project, film convert will clip your highlights and should not be used. They are aware of this bug and have no plans to fix it at this time.
There are a number of grain scans available for a wide variety of prices and of differing quality. Some are actual grain, some are generated renders but the effect is the same. The key here is that the grain was shot on a grey card which should ensure that when we mix the grain using overlay blend mode we don't affect the luma values of our image.
There are two major ways to apply grain overlays within Resolve. The simplistic way is to go to the edit tab, create a new video track, add your grain scan, and adjust the composite mode to "overlay." I'm not a fan of this method as it's hard to tune and requires you to copy and paste the grain clip (which are often short) to get it across the entire timeline.
A much better method is to add the grain to the media pool as a matte as pictured below:
From there, head to the color tab and perform your grade (primary, secondary, etc). When it's time for the grade, add a new node and call it "grain mixer." Add a layer mixer node to this node (
ALT+L) and name it "grain control." delete the link on the left side of this node so it's not connect on the left. Right click this node and select
Add Matte > Track Matte > grain.mov. Delete the link between the new matte and your "grain control" node. Drag from the circle on the right of the matte node and connect it to the circle on the left of "grain control." You should have something that looks like this:
Click on the "EXT MATTE" node and select the key controls in the color panel (the "key" icon). Uncheck the box that says "Lock Matte." Zoom in to whatever degree you need to fill your frame and get the desired grain size. Make sure the "Loop" box is still checked.
Now right click the layer mixer node (labeled "Layer") and select
"Composite Mode" > Overlay. You should see your image with grain on it! You may notice the luma value of your image has changed. If this is the case then the grain scan you are using isn't using the correct grey. It's a simple fix, merely bring the gain of the image down (in the scan I used a setting of 0.69 was sufficient). You must perform this action in the "Grain Control" node.
Now you've got film grain! If you want to increase or decrease the intensity, try adjusting the contrast or midtone details of the "Grain Control" node until you're happy with the look. If you're looking for monochrome grain, desaturate the "Grain Control" node. If you decide the grain needs to be bigger or smaller, adjust the zoom of the "EXT MATTE" node like you did earlier.
To quickly add this grain to other shots or groups, you'll want to add the grain nodes as a saved grade or powergrade to quickly apply. The easiest way to do that is to create a new local version of your clip (
CMD+Y), delete all the non-grain nodes, and save the grade (
ALT+1-8). Now you can select clips you'd like to apply grain to (hold
shift to select multiple clips) then right click the grain grade in your gallery and select "Append Node Graph."
If you'd like to load my premade "add grain" node graph from this project, you can download it here. The graph tree looks as follows:
Simple download the zip, unzip, right click on any grey in the gallery, select
Import and then navigate to the DPX you just unzipped. The look should be imported and you will be able to apply the graph to your project.
You will also need the grain scan I am using available here. This is a ~920MB ProRes 4444 4K grain file generated in Nuke to emulate Kodak 5219. It is released into the public domain. The grain will need it's gain adjusted in order to be overlayed without affecting your image.