{"course":{"slug":"ai-video","title":"Video with AI","url":"https://addaly.com/learn/ai-video","level":"intermediate","track":"create"},"lesson":{"slug":"grain-texture-and-defocus","title":"Putting back the texture the encoder removed","url":"https://addaly.com/learn/ai-video/grain-texture-and-defocus","position":54,"of":66,"minutes":8,"answer":"Generated frames are smooth because the autoencoder discarded high-frequency detail, so a single grain pass across the finished timeline replaces a missing surface property and unifies clips more effectively than any colour operation.","keyIdea":"Generated frames are smooth because the autoencoder discarded high-frequency detail, so a single grain pass across the finished timeline replaces a missing surface property and unifies clips more effectively than any colour operation."},"body":{"format":"markdown","text":"## Why grain works so well here\n\nEvery clip went through the same lossy encoder, which removed fine texture and returned a smooth, denoised surface. That smoothness is one of the strongest cues that something is synthetic: stronger than colour, stronger than motion, and largely unconscious.\n\nReal captured images have noise. Film has grain, digital sensors have shot noise, and both are irregular, high-frequency, and present everywhere.\n\nAdding grain does two things at once:\n\n1. **It replaces a missing property**, so the image reads as captured rather than rendered.\n2. **It gives every clip the same surface.** Thirty generations with one grain layer over them share a texture they did not have individually, which is a form of matching that colour work cannot achieve.\n\n## One pass, over everything\n\nThe rule that matters: apply grain once, to the finished timeline, on an adjustment layer above everything.\n\nApplying it per clip gives you thirty grains with slightly different characteristics, and the difference is visible at every cut, which is worse than no grain at all, because now the cuts have an extra thing changing across them.\n\nIn Resolve: an adjustment clip on the top track spanning the whole timeline, with Film Grain on it. In Kdenlive or Shotcut: a grain filter on a track above, or a grain video file on a track above set to overlay or soft light blend at low opacity. In CapCut: a grain overlay applied to the whole project.\n\n## Getting the amount right\n\nThe two things people get wrong are amount and size.\n\n**Amount.** You should not be able to see the grain when watching normally. You should see it if you pause and look. If the grain is noticeable in motion, halve it. A useful test: toggle the layer on and off: the footage should look slightly wrong with it off and unremarkable with it on.\n\n**Size.** Grain has a spatial scale, and that scale must relate to the output resolution. Grain sized for 4K applied to a 1080p export looks like fine noise; grain sized for 1080p and then upscaled looks like blotches. Set it for the resolution you are delivering at, and if you change delivery resolution, revisit it.\n\nThere is also a delivery consideration. Grain is high-frequency detail, which is exactly what video compression removes first, so heavy grain plus a low-bitrate platform re-encode produces a smeary mess. Keep the grain light and the bitrate adequate, which the export lesson deals with.\n\n## Halation and bloom\n\nReal lenses and real film do something else generated footage does not: bright areas spill slightly into their surroundings. Film halation gives a warm red glow around highlights; lens bloom gives a general soft spread.\n\nA small amount of this sells a shot as photographed more than most people expect. In Resolve, the Glow effect at low intensity restricted to highlights. In any editor, duplicate the clip, blur the copy heavily, restrict it to bright areas with a luminance key, and blend it back at low opacity.\n\nThe same warning as grain: subtle. Visible bloom is a filter.\n\n## Defocus and vignette\n\nTwo more properties of real optics worth adding deliberately rather than asking the model for.\n\n**Defocus.** A keyframed blur, masked, gives you the rack focus that the model performs badly. It is deterministic and adjustable, which the generated version is not.\n\n**Vignette.** Real lenses darken slightly toward the corners. A very light vignette focuses attention and reads as lens character. A heavy one reads as an Instagram filter from 2012.\n\n## Denoise before regrain, sometimes\n\nA counter-intuitive professional move worth knowing. If a generated clip has visible compression artefacts or inconsistent noise of its own, cleaning it first and then adding uniform grain produces a better result than adding grain on top of a mess.\n\nResolve's free tier does not include the full noise reduction tools, which is one of its real limitations. The free route is FFmpeg's `hqdn3d` or `nlmeans` filters:\n\n```bash\nffmpeg -i in.mp4 -vf hqdn3d=1.5:1.5:6:6 -c:v libx264 -crf 18 clean.mp4\n```\n\nThen grain the clean version in the edit. This is worth doing only when a clip has a noise problem, not as a default.\n\n---\n\nToday: put a single grain layer over your whole timeline, set it until you can only see it on a paused frame, and toggle it on and off while watching."},"check":{"question":"An editor applies a film grain effect individually to each of thirty generated clips, matching the settings carefully each time. What goes wrong?","options":[{"text":"Each clip's grain is generated independently, so its pattern differs from its neighbours and the change becomes one more thing moving across every cut.","correct":true},{"text":"Per-clip grain accumulates where clips overlap in transitions, producing visibly heavier texture at every dissolve.","correct":false,"tempting":"Would be true at dissolves, which are a small fraction of the timeline and not where the problem is reported."},{"text":"Grain applied before the grade is altered by the subsequent contrast curve, so identical settings produce different visible amounts once the look is applied.","correct":false,"tempting":"A real ordering consideration that is solved by grading first, and which does not explain why one global pass succeeds where thirty matched ones fail."},{"text":"Rendering grain thirty times rather than once multiplies the processing load, so the export takes substantially longer without any improvement in the result.","correct":false,"tempting":"Names a genuine inefficiency that has no bearing on how the finished footage looks."}]},"prev":{"slug":"matching-colour-across-generations","title":"Thirty renders, one world","url":"https://addaly.com/learn/ai-video/matching-colour-across-generations"},"next":{"slug":"titles-text-and-the-label-card","title":"Real type, added afterwards","url":"https://addaly.com/learn/ai-video/titles-text-and-the-label-card"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Putting back the texture the encoder removed', in Video with AI. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/ai-video/grain-texture-and-defocus (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Putting back the texture the encoder removed","courseTitle":"Video with AI","module":{"index":6,"slug":"the-edit","title":"From generations to a finished piece"},"answer":null,"keyIdea":"Generated frames are smooth because the autoencoder discarded high-frequency detail, so a single grain pass across the finished timeline replaces a missing surface property and unifies clips more effectively than any colour operation.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"why-grain-works-so-well-here","runs":[{"text":"Why grain works so well here"}]},{"t":"p","runs":[{"text":"Every clip went through the same lossy encoder, which removed fine texture and returned a smooth, denoised surface. That smoothness is one of the strongest cues that something is synthetic: stronger than colour, stronger than motion, and largely unconscious."}]},{"t":"p","runs":[{"text":"Real captured images have noise. Film has grain, digital sensors have shot noise, and both are irregular, high-frequency, and present everywhere."}]},{"t":"p","runs":[{"text":"Adding grain does two things at once:"}]},{"t":"ol","start":1,"items":[[{"text":"It replaces a missing property","b":true},{"text":", so the image reads as captured rather than rendered."}],[{"text":"It gives every clip the same surface.","b":true},{"text":" Thirty generations with one grain layer over them share a texture they did not have individually, which is a form of matching that colour work cannot achieve."}]]},{"t":"h2","id":"one-pass-over-everything","runs":[{"text":"One pass, over everything"}]},{"t":"p","runs":[{"text":"The rule that matters: apply grain once, to the finished timeline, on an adjustment layer above everything."}]},{"t":"p","runs":[{"text":"Applying it per clip gives you thirty grains with slightly different characteristics, and the difference is visible at every cut, which is worse than no grain at all, because now the cuts have an extra thing changing across them."}]},{"t":"p","runs":[{"text":"In Resolve: an adjustment clip on the top track spanning the whole timeline, with Film Grain on it. In Kdenlive or Shotcut: a grain filter on a track above, or a grain video file on a track above set to overlay or soft light blend at low opacity. In CapCut: a grain overlay applied to the whole project."}]},{"t":"h2","id":"getting-the-amount-right","runs":[{"text":"Getting the amount right"}]},{"t":"p","runs":[{"text":"The two things people get wrong are amount and size."}]},{"t":"p","runs":[{"text":"Amount.","b":true},{"text":" You should not be able to see the grain when watching normally. You should see it if you pause and look. If the grain is noticeable in motion, halve it. A useful test: toggle the layer on and off: the footage should look slightly wrong with it off and unremarkable with it on."}]},{"t":"p","runs":[{"text":"Size.","b":true},{"text":" Grain has a spatial scale, and that scale must relate to the output resolution. Grain sized for 4K applied to a 1080p export looks like fine noise; grain sized for 1080p and then upscaled looks like blotches. Set it for the resolution you are delivering at, and if you change delivery resolution, revisit it."}]},{"t":"p","runs":[{"text":"There is also a delivery consideration. Grain is high-frequency detail, which is exactly what video compression removes first, so heavy grain plus a low-bitrate platform re-encode produces a smeary mess. Keep the grain light and the bitrate adequate, which the export lesson deals with."}]},{"t":"h2","id":"halation-and-bloom","runs":[{"text":"Halation and bloom"}]},{"t":"p","runs":[{"text":"Real lenses and real film do something else generated footage does not: bright areas spill slightly into their surroundings. Film halation gives a warm red glow around highlights; lens bloom gives a general soft spread."}]},{"t":"p","runs":[{"text":"A small amount of this sells a shot as photographed more than most people expect. In Resolve, the Glow effect at low intensity restricted to highlights. In any editor, duplicate the clip, blur the copy heavily, restrict it to bright areas with a luminance key, and blend it back at low opacity."}]},{"t":"p","runs":[{"text":"The same warning as grain: subtle. Visible bloom is a filter."}]},{"t":"h2","id":"defocus-and-vignette","runs":[{"text":"Defocus and vignette"}]},{"t":"p","runs":[{"text":"Two more properties of real optics worth adding deliberately rather than asking the model for."}]},{"t":"p","runs":[{"text":"Defocus.","b":true},{"text":" A keyframed blur, masked, gives you the rack focus that the model performs badly. It is deterministic and adjustable, which the generated version is not."}]},{"t":"p","runs":[{"text":"Vignette.","b":true},{"text":" Real lenses darken slightly toward the corners. A very light vignette focuses attention and reads as lens character. A heavy one reads as an Instagram filter from 2012."}]},{"t":"h2","id":"denoise-before-regrain-sometimes","runs":[{"text":"Denoise before regrain, sometimes"}]},{"t":"p","runs":[{"text":"A counter-intuitive professional move worth knowing. If a generated clip has visible compression artefacts or inconsistent noise of its own, cleaning it first and then adding uniform grain produces a better result than adding grain on top of a mess."}]},{"t":"p","runs":[{"text":"Resolve’s free tier does not include the full noise reduction tools, which is one of its real limitations. The free route is FFmpeg’s "},{"text":"hqdn3d","code":true},{"text":" or "},{"text":"nlmeans","code":true},{"text":" filters:"}]},{"t":"code","lang":"bash","label":"Bash","text":"ffmpeg -i in.mp4 -vf hqdn3d=1.5:1.5:6:6 -c:v libx264 -crf 18 clean.mp4"},{"t":"p","runs":[{"text":"Then grain the clean version in the edit. This is worth doing only when a clip has a noise problem, not as a default."}]},{"t":"rule"},{"t":"p","runs":[{"text":"Today: put a single grain layer over your whole timeline, set it until you can only see it on a paused frame, and toggle it on and off while watching."}]}],"check":{"question":[{"text":"An editor applies a film grain effect individually to each of thirty generated clips, matching the settings carefully each time. What goes wrong?"}],"options":[{"text":[{"text":"Each clip’s grain is generated independently, so its pattern differs from its neighbours and the change becomes one more thing moving across every cut."}],"correct":true,"tempting":null},{"text":[{"text":"Per-clip grain accumulates where clips overlap in transitions, producing visibly heavier texture at every dissolve."}],"correct":false,"tempting":[{"text":"Would be true at dissolves, which are a small fraction of the timeline and not where the problem is reported."}]},{"text":[{"text":"Grain applied before the grade is altered by the subsequent contrast curve, so identical settings produce different visible amounts once the look is applied."}],"correct":false,"tempting":[{"text":"A real ordering consideration that is solved by grading first, and which does not explain why one global pass succeeds where thirty matched ones fail."}]},{"text":[{"text":"Rendering grain thirty times rather than once multiplies the processing load, so the export takes substantially longer without any improvement in the result."}],"correct":false,"tempting":[{"text":"Names a genuine inefficiency that has no bearing on how the finished footage looks."}]}],"order":[2,1,3,0],"why":null},"prev":{"slug":"matching-colour-across-generations","title":"Thirty renders, one world","minutes":10},"next":{"slug":"titles-text-and-the-label-card","title":"Real type, added afterwards","minutes":8}}}