Changelog
What shipped, and when.
Every release, in the order it shipped. Not marketing copy: exactly what changed, why, and what it means for a project you already saved.
v1.1.62026-08-13
Fixed
- The render engine loads on macOS 13 through 15 again. Builds since early August compiled the GPU engine with the newest macOS as its silent minimum — on any older system the engine refused to start, and the plugin showed a white frame (before 1.1.5) or a silently unchanged image (1.1.5). The engine now carries the same macOS 13 floor as the plugin itself, and the build fails permanently if that floor ever drifts again. If EMBR has seemed broken on your machine, this build is the fix.
v1.1.52026-08-12
Added
- Channel Lean is its own section. The six paired channel laws, their tonal placement and their Skin Protect now live directly below Scene Lean as a top-level section with an Enable of their own — on by default, neutral until you dial a law, and a one-click A/B once you have. Saved grades render exactly as before: projects from earlier versions keep the old behavior — including a keyframed Amount — resolved automatically, with nothing rewritten.
- The EMBR Method, one click away. A button in the License section opens the method page — how to think about the system — with a section-by-section tool reference alongside it.
Changed
- Instruments is now Scene Lean. The section that grades the subjects — sky, foliage, red, with skin protected — carries the name of the job. Every control and saved value is unchanged.
- Scene Lean's Enable now starts on. Every target defaults to zero, so a fresh node renders identically — the difference is that dialing a subject just works, and the switch is there as an A/B. Saved projects keep their stored value.
- Edge Irregularity is subtle by law. The slider's reach is now 0.15 of the old scale — full deflection is a detail you feel, not a shape you see — and the raggedness breathes per frame the way emulsion chips and gate hairs do, while the broad undulation stays fixed to the strip. Saved grades using the old, larger range will render with the new subtle edge.
- The Emulsion grain blend is being rebuilt. The current model never reached what it promised, so it steps aside while a new version is built — the three blends that did land — Density, Gentle, Strong — remain. Saved grades that used Emulsion render exactly as before; pick one of the other three for new work until the rebuild arrives.
Fixed
- Specular Diffusion now turns off with Halation. It lives in the halation section and now obeys its section's switch; grades with Halation disabled lose a softening they never chose.
- A failed render shows your clip, never a white frame. If the render engine cannot start on a machine, the plugin now passes the image through untouched and logs why, instead of leaving the frame blank.
- Each stock's measured sharpness now actually arrives. The per-stock edge character — derived from the datasheet's measured MTF and meant to scale Acutance since it shipped — was silently never applying. Stocks with a measured row now render with their own edge behavior; stocks without one are unchanged.
- Shadow and Highlight Roll widths now respect the stock's contrast. The stops-to-curve conversion behind both sliders was dropping the selected stock's contrast factor; rolls on contrastier stocks land slightly tighter, exactly as the math always intended. Build My Own is unchanged.
- Six edge-case guards made storm-proof. A family of checks that recover from invalid pixel math (the kind that shows as random glitch speckle) were written in a form the shader compiler optimizes away; they are now compiled-in on both Mac and Windows.
v1.1.42026-08-09
Added
- Texture Pop — micro contrast at six separate scales, in both directions. A new section at the very top of the panel, and the first thing that happens to the image: six sliders from Tiny to Large, each governing detail at its own size, from roughly two pixels to seventy at 4K. Every band runs both ways — positive lifts detail at that size, negative removes it, so softness at one scale and pop at another can live in the same shot. Because it runs before the emulsion, the negative records a scene that already carries the local contrast, and because grain lands at the end of the chain, none of it is ever sharpened. It works in stops rather than in light, the way burning and dodging always did, so cranking a band rolls off instead of blocking up. Low and High Thresholds bound the effect by size; four presets to start from — Skin, Fabric & Detail, Landscape, Dimensional — and a Texture Pop view shows the detail signal on its own. Black bars and mattes are ignored by construction, so anamorphic frames don't halo at the edge.
- Native Stock Tone Curve joins the Contrast Presets. The film's own measured curve — toe, shoulder, black depth and latitude straight from its datasheet — now sits in the preset list beside Punchy and Film Compressed, where you'd look for it. Choosing it hands the curve to the stock and greys the four shapers while the measurement drives. The Tone selector's Auto Per Stock remains for grades that already use it; there is also a new Stock Curve + Preset tone mode where the sheet drives and the preset shapes on top of it.
- Kodak Verita 200D (5206) joins the stock library. Kodak's newest emulsion, derived from its published datasheet: a long linear body with the shoulder arriving earlier than Vision3 — the shorter, richer range behind its "classically cinematic" positioning — and a layer structure whose slow green record reproduces the documented magenta-leaning highlight response. Its own Kodak Verita shelf in the stock picker.
- Use Stock Gamma Curves. A checkbox in Layer Gammas that swaps the baseline under the three sliders: on, they trim the selected film's measured layer slopes; off, the film's slopes are replaced by a neutral flat slate. Your numbers never move — only what they're measured against.
Changed
- Layer Gamma sliders mean one thing everywhere. The three sliders are now always a multiplier: 1.0 is neutral on a film stock, on Build My Own, and with stock curves off alike. Previously Build My Own read them as absolute slopes with a different neutral, and switching modes could leave the wrong scale behind — the source of "why is Build My Own so contrasty." Saved Build My Own grades are converted automatically at load and render exactly as they did.
- A fresh node lands closer to neutral. Film Motion now starts off — transport movement is a choice, not a baseline. Grain Saturation starts at 0.50 instead of 1.00, because full-strength dye grain reads noisier than film. White Anchor's factory value is 0. Saved projects keep whatever they stored; only new nodes move.
- Auto Per Stock starts neutral and resets to neutral. Choosing it, or hitting Reset while it is chosen, leaves Contrast at 1, Open/Close at 0, both anchors at 0 and Base Fog at 0 — the stock's own measured curve does the work, with nothing stacked on top of it.
- The plugin starts rendering sooner. The render engine now ships precompiled rather than being built on your machine the first time a node wakes up. Nothing about the image changes.
Fixed
- Neg. Saturation at exactly 0 no longer speckles. On a fully desaturated image, perfectly neutral pixels could hit undefined hue math and render as dense noise — only at 0.00, clean a hair above. Every hue computation now treats exact neutral as exactly neutral.
- Build My Own is a clean slate again. Entering it could inherit contrast from the previous stock, render far too contrasty from stale layer-gamma scales, and leave Color Response looking broken (it needs a stock to respond to — it now greys and says so). All three paths fixed; a stock's shaping no longer follows you into the mode whose promise is starting from nothing.
- A stock's colour arrives in every tone mode. Per-stock colour tuning was only applied under Auto Per Stock, so a stock (Verita most visibly) looked right in one tone mode and not the other. Stock character is stock character now, regardless of how you drive the curve.
- Layer Gamma means the same thing in both tone modes. In Auto Per Stock the three sliders were changing overall contrast rather than bending the individual red, green and blue curves. Grades using Auto Per Stock with unequal layer gammas will see this correction.
- Auto Per Stock highlights no longer overshoot the panel. A stock's measured curve could derive up to double the Highlight Latitude the slider can express — highlights climbing past any control's reach. The measurement is now bounded by what the panel can state, so those stocks roll off sooner and the sliders can always reach what's rendering.
- EMBR Hue: the Skin key no longer draws its own edge. Any Skin adjustment could print the key's boundary onto a face — hardest at Skin Sat 0, where saturated areas escaped the key's ceiling entirely and stayed vivid against desaturated surroundings. The key's transitions are now two to three times wider, and on a deep saturation pull its ceilings release so the pull reaches everything skin-adjacent. Untouched Skin controls render as before.
Coming
- Three DCTL instruments in refinement — Tone Matrix, Channel Lean, Scene Lean. Announced alongside 1.1.0 ahead of themselves: they are being refined in-house for a standalone DCTL release rather than the installer. The OFX Instruments section carries the channel-lean and subject-grading tools today; what ships as a DCTL will follow how those get used.
- EMBR Tone Matrix (new DCTL): a channel matrix that changes with tone — one global 3×3 plus Shadows and Highlights delta matrices, blended by smooth overlapping tonal windows (no cutoffs; the mids see a weighted average of all three). Reach sliders place each delta's extent; Zones view paints the windows; Log domain mixes like dye density, Linear like light. Grew out of authoring EMBR Print — the record-separation control printer lights can't reach.
- EMBR Channel Lean (new DCTL): the safe form of the matrix — six sliders, each a paired law ("lean Green toward Blue where they differ") with the neutral-protecting offset built in. Grays are mathematically untouchable at any setting; no keys, no gates, nothing to break at an edge. Three band Strength sliders place the lean tonally; Zones view paints the bands.
- EMBR Scene Lean (new DCTL): grade the subjects, not the channels — Sky, Foliage, Skin, each found by a smooth hue×tone×chroma gate (no masks, no qualifier edges) and carrying a few opinionated axes: Sky Cyan/Deep, Foliage Yellow/Deep, Skin Red/Bright/Sat. Keys view paints where each subject key is live. Born from the print-authoring instrument's sector leans, generalized for everyday grading.
v1.1.32026-08-06
Added
- Color Split — the film's layer separation at edges, now a control. The measured emulsion scatter blurs the three color records apart — red roughly twice as wide as green and blue. Sub-pixel at 35mm; at 8mm magnification it reads as a red/cyan edge fringe. A new dial in Film Resolution sets how much of the measured split renders: 1 = the datasheet, 0 = clean achromatic softness at the same overall width. Stocks without a digitized sheet, like the Fuji four, carry none.
- Specular Diffusion is a true blur now. Its feather used to be estimated from a sparse ring of samples, which speckled the edges of hard speculars instead of feathering them. The spilled energy now flows through a real blur — same physics, same dials, creamy at any amount.
Changed
- Midtone Detail leaves the panel. A wide-radius digital clarity that never sat right next to the film-honest tools that own its jobs — mid slope belongs to Open and Close, edge presence to Acutance. Grades that dialed it keep rendering exactly as saved; a real local-contrast tool, built the way it deserves, is planned at the front of the pipeline.
v1.1.22026-08-05
Fixed
- LED and neon color can no longer break the negative. Single-color stage lighting — pink LED walls, saturated club light, neon — used to posterize into flat, clipped color: those sources hand the film model channel separations no real optic ever delivers, and both the observer and the curves hit their walls. Two pieces of physics replace the walls: the observer now applies its seeing in log-light, so a starved channel dims smoothly instead of crossing into impossible values, and a spectral floor models the veiling glare every real lens leaks — no channel can starve further below the scene than real glass would allow. Greys and mid-grey are untouched at any setting, natural color renders as before, and the hostile cases keep full gradation at every Color Response level.
- Halation keeps its transition when its Film Format is pinned apart from the master. Pinning halation to 8mm under a 16mm master used to bring back a hard edge on white highlights — the color transition was tuned at 16mm radii and didn't scale. It scales now; 16mm and 35mm render exactly as before.
- The empty Grime dropdown is gone. The retired scanner-crud cluster left its header behind as a hollow twirl-down; hidden with its children.
Changed
- 8mm and Super 8 grain re-tuned. Selecting an 8mm format now lands a fuller, softer, quieter-color grain — re-dialed by eye against real small-gauge scans — and switching back to 16mm or 35mm restores the baseline exactly.
v1.1.12026-08-05
Fixed
- Extreme footage can no longer punch black holes in the frame. Non-finite pixel values — a wrong Input Color Space on very hot footage, or camera files carrying infinities — used to slip past the renderer's safety checks and come out as spreading black blobs, worst with Contrast at either end of its travel. Every guard now runs at the bit level where the GPU compiler cannot optimize it away: bad pixels are caught at ingest and again at output, and a damaged pixel becomes a single flat mid-grey dot instead of a black cluster. Ingest is also bounded to photographic reality — a wrong Input Color Space now degrades to a wrong-looking but solid picture on every preset, including the wide-open Neutral tone. On normal footage the render is bit-for-bit identical.
v1.1.02026-08-04
Fixed
- Halation no longer washes flat bright areas. Halation's visibility now follows the physics of the receiver: a halo landing somewhere as bright as its own source is invisible (a sky cannot wash itself), while the same halo rims fully into darker neighbors. Edge glow into shadows — the halation you dial for — is untouched.
- One color law for the whole glow. Halation's core, scatter, and highlight flare no longer carry separate hue and saturation systems with seams between them. Color is one continuous function of local energy: dim glow sits at Edge Hue's deep red, rising energy walks toward Core Hue, and the hottest rims whiten through a shoulder at constant light — the way incandescence behaves. Every dial keeps its meaning.
- Blue light halates like film now. Source Response has real authority: halation energy follows how much of a source's light can actually survive the trip past the yellow filter layer to the film base — so blue skies halate at their true red-content share, deep blues (neon, twilight) barely at all, and warm sources are unchanged.
Changed
- EMBR 1.1 installs beside EMBR 1.0 — it never overwrites it. The 1.1 series is its own plugin in the OpenFX list, so projects graded on 1.0.x keep rendering on the exact binary they were built with, forever. New work picks the 1.1 plugin; both can live on one system.
- Punchy is the default Contrast Preset. Fresh instances load Punchy — shadows run straight into deep blacks, with crisp mids and long, soft rolls into both ends. Film Compressed, Open (Legacy) and Neutral remain one click away; existing projects keep their saved values.
Added
- Layer Gammas live with contrast. The three per-layer gamma sliders move into Neg. Contrast under their own Layer Gammas shelf, below Base Fog — slope is a contrast property, and the fan draws in that section's Show Curve. Dye Crossover keeps the zonal separation handles.
- Highlight Diffusion — the brights bloom first. A new Film Resolution control mixes a wider, softer diffusion into the highlights only, weighted by light itself: where light is abundant it scatters first, while mids and shadows keep the base Diffusion crisp. Off by default — dial it in and speculars, windows and skies sit in atmosphere the way a print's do.
- Digital to Negative, rebuilt on a pure Cineon spine. The negative encode now runs the true Cineon transfer function inside the full D2N color system, with a proper highlight shoulder (Highlight Down, with a Color Hold that lets brights keep their saturation through the roll) and a re-dialed default balance — gentler gamut rolloff, cleaner color density, lighter base fog. Deep blues keep their body, yellows stay golden, and smooth gradients stay smooth through the print LUT. The previous curve remains selectable as Film Curve.
- Film Compressed now includes its fog floor. The default contrast preset carries Base Fog 0.225 as part of the curve — the milky floor is the look, not an extra step. Open (Legacy) keeps the floor off, and every reset and preset switch re-seats the whole five-slider curve (rolls, depth, latitude, fog) per the preset you have selected — including the Negative mode switch, which used to quietly stamp the old tuned rolls back.
- Strong halation re-dialed as the shipping default — bigger and deeper (Size 10, Threshold eased to 0.65 so real highlights participate, a breath of Remjet Removal), quieter color, full-red edge and full-orange core hues, warmth present from the first stop. Highlight Flare now ships off — flare is the opt-in on top.
- Film Motion breathes by default. Fresh nodes open with the transport alive — gentle gate weave and exposure breathing, re-seated per gauge by Film Format. Frame Rate cadence stays strictly opt-in. And Rendering opens on Vivid — the stock's full spectral seeing is the first impression; Natural stays one click away.
- Sat Density defaults to 0.5 in Digital to Negative (plugin and DCTL). At 1.0 the saturation anchor is the brightest channel, so all added saturation rendered as pure density — deep blues went too dense. 0.5 splits the depth between density and body.
- The stock pickers tell one truth now. Three fixes: the flat Negative Stock list no longer reappears next to the category shelf, the shelf reflects the stored stock when a project loads, and a fresh node's shelf shows the actual default — Kodak Vision3 250D.
- Resetting the contrast section now respects your Contrast Preset. Reset used to stamp the default Film Compressed curve over a selected Open (Legacy); now every reset re-seats the preset you chose — reset means "this preset's baseline." The Black and White Anchors join the section reset too.
- Measured Crossover is built in. Auto Per Stock tone now simply IS the whole datasheet — tone baselines and the stock's measured layer crossover together, no separate checkbox to remember. Custom tone keeps the exact shipped behavior, so existing grades are untouched.
- The Neg. Contrast section reads top-down now. Contrast Preset and Tone lead, the curve shape sliders follow, the end anchors and Base Fog trim last — the order the decisions are actually made in.
- Film Speed now changes the grain's crystal population, not just its size. Under the plates engine, a 500-speed stock renders a genuinely coarser-grown grain structure and a 50-speed a finer one — three baked crystal populations selected by speed class — instead of one population zoomed. Slow stock reads fine-but-grainy, fast stock reads coarse-grown, exactly as the emulsion physics says.
- Halation now obeys absolute light levels. A white logo on a black shirt in shadow has the local contrast to pass the gates but not the actual light for a visible bounce-back — film physics is linear in exposure, and below about two and a half stops under diffuse white the round trip can never read. An energy floor now enforces that regardless of how low you pull Threshold or how wide you open Soft Knee: shadowed whites stay clean, real highlights are untouched.
- Pro Mist now dims halation the way a real diffusion filter does. A mist filter spreads a source's peak energy before the emulsion, so film halates less under diffusion — but the halation extraction used to read the un-misted image. It now scales with mist strength.
- Flare Falloff — restrict how far Highlight Flare reaches. 0 keeps today's full scatter spread; up pulls the flare in tight to its source while base halation keeps its full reach. Works like Restrict Spread, but only for the flare. This control replaces Veil.
- Warmth Onset joins the shipping halation panel. Where along the exposure ramp the halo starts warming from red toward orange — previously a hidden authoring control.
- Highlight Flare no longer washes skies. Flare used to ignite on everything above a fixed brightness, and skies live in exactly that band — pushing Flare high laid a wash across the whole sky. Flare now fires only where a pixel genuinely outshines its neighborhood or is truly blown, so lamps, glints, windows and the sun still flare from their full area while flat bright fields stay clean.
- A fourth grain Blend: Emulsion. The other three lay grain over the image; Emulsion renders the image THROUGH the granular medium — edges go ragged at granule scale and the finest detail is carried by the granules themselves, which is how film actually resolves. The strongest character of the four. Amount sets how much of the image the granules carry.
- Grain color now lands where the dye actually is. Three fixes, each for a different reason our grain read as colored blobs rather than colored granules — and none of them is a control: this is how film behaves, so it is simply how the grain renders now. The blue dye layer is freed from the luma field. Measured, 91% of the visible grain chroma sat on the magenta-green axis with yellow and blue at zero, which is why the grain read magenta where a print reads orange and teal — that axis only exists when blue can move on its own. Each channel's grain follows how much of that dye is actually present: a grain is a clump of dye, so a saturated red has almost no cyan and should show almost no red-channel grain, while neutrals hold all three and keep their tri-color speckle. And the color rides the granules instead of spreading over granules and gaps alike — where a crystal developed, the spot is both darker and colored; where none did you get clear base, which is lighter and neutral. All three redistribute color rather than adding any, so they cannot tint the image or fight Saturation. Grain color on an existing grade will look different on re-render.
- Instruments and Channel Lean each get a Reset. Instruments resets its three targets, Skin Protect, Key Softness and the View, leaving Enable and Channel Lean alone; Channel Lean resets its six laws and three tonal strengths on its own.
- A Build field in the Dev panel showing which binary is actually loaded. If it does not match the build you just installed, Resolve is still running the previous one.
- Black Anchor and White Anchor — small trims on where the curve's ends land. Deliberately short-range: they re-anchor the blacks and the whites without reshaping anything between. They ride on top of whatever set the ends — your Black Depth and Highlight Latitude in Custom tone, or the stock's own datasheet in Auto Per Stock, where they are the one end control that stays live. The knees and middle grey don't move; Open/Close walks its knees relative to wherever these anchor the ends. 0 = exactly the curve you had.
Changed
- The halation panel consolidates to one lever per job. Restrict Spread and Source Exposure leave the surface: the glow's reach is now owned entirely by Scatter Size + Falloff Start + Falloff Decay (real geometry instead of an energy exponent), and "more halation" is Strength with one gate (Threshold + Softness) instead of three overlapping paths. Both retired controls keep rendering their defaults and any value a saved project dialed — nothing shifts on load. Remjet Removal also stops adjusting Core Hue; the hue dials belong solely to you.
- Highlight Latitude no longer puts a corner in the curve. Pulling Latitude down used to land the shoulder on its ceiling abruptly — the roll's width stayed fixed while the room it had to land in shrank. The landing now scales with the room Latitude leaves it (measured: worst-case curve kink at minimum Latitude drops from 7.6% to 1.6%), the default is untouched, and datasheet-derived stock tones keep their measured values.
- The EMBR 2383 print no longer bands on clean gradients. The banding lived in the bake — our cube carried up to 1.76x the slope noise of Resolve's on ramp material. The bake now relaxes that ripple under a strict fence (no color value moves more than half an 8-bit code), which puts our gradients at or below Resolve's smoothness while the print's color stays exactly the version that was picked by eye. Applies to all three white points and every face of the plugin.
- Grain ships a new dialed baseline. The default grain is now the plate-engine recipe tuned against real film — richer dye saturation, finer default size, softer granule bodies, and a rebalanced tonal placement. Film Format no longer overrides Blend when you pick a gauge (it used to silently stamp a blend per format, so defaults never survived a Format change). Projects keep every value they set themselves; untouched fresh nodes land on the new baseline.
- Instruments now sits under Lens Character, above Negative. It has always RUN at the pre-negative capture — scene-linear, before any emulsion — but it was described up beside Output, so the panel implied a stage the engine does not have. Reading order and processing order now agree: shape the light, then expose it. Nothing about the processing moved.
- Key Softness now defaults to 0.75 instead of 0. Softness is what stops a subject key drawing a hard band across a cheek or a horizon, and a band is a far worse failure than a slightly less selective grab. Safe to change: Instruments is new and ships disabled, so no existing grade moves.
- Irradiation gets a Saturation slider — and it only colors the glow. How much color the scattered light carries, with nothing else touched. 0 gives a neutral bleed, so highlights spread as clean light with no cast; 1 is the color the channel spreads make on their own; above 1 pushes the red-amber further. It works on the scattered light itself rather than the finished image, so a pixel the irradiation never reached is untouched at every setting — this cannot wash out your picture the way a saturation control after the fact would. Brightness and reach don't move either: it is purely the color of the glow. Defaults to 1, so nothing changes until you move it.
- Output → Print: EMBR can finish the print itself, so there's no LUT node after it. Output Tone is now just Output, because it no longer picks a tone — it picks what leaves the node. Alongside Same as Input and Digital to Negative there is now Print, which hands you a finished Rec.709 image. Choose it and two controls appear directly beneath, above Film Format: Print Stock and White Point (D65, D60, D55). Nothing appears until you ask for it, and nothing sits there doing nothing. Four prints. EMBR 3282 is the authored one, with Portrait (warmer mids, skin up) and Bleach (a bleach bypass) alongside it. Kodak 2383 is our own simulation of that print stock — derived from its published data, built here rather than sampled from anyone else's LUT — the straight print with no grade on top, for when the grading is yours to do. It runs where a lab runs it — last, after your printer lights have landed on the negative — so a point of red still passes through the print's own crosstalk and shoulder instead of arriving as a flat offset. Same cube, same place in the chain, so the result matches putting that LUT in a downstream node. Prefer to print it yourself, with Resolve's own 2383 or anything else? Leave Output on Digital to Negative and carry on exactly as you do now. Existing projects are untouched: they open on the Output they were saved with.
- Grain is generated the way film generates it: three dye layers, no luma field. Film has no luma grain — luminance noise is what the eye makes of three colored dye layers summing. The generator now draws three independent per-record grain fields, sizes and weighs them from the record granularity law the datasheets show (the blue/yellow record coarsest and loudest, widening with speed; red slightly finer than green), and mixes them through the stock's own traced dye matrix — so the cross-channel structure of real scanned film emerges instead of being painted on. Measured against Kodak's published film statistics, the generated grain now lands inside the real correlation windows; the old architecture measurably could not. Grain color also now rides the lighter-printing side of each granule — a developed cloud blocks printing light, so its print is lighter and colored, the gap darker and neutral. Grain texture and color change on re-render.
- The texture model ships as the measured one. Grain size now comes from each stock's measured granularity, grain softness from its measured dye-cloud scatter, grain stays welded to image softness as diffusion moves, the emulsion's measured optical scatter runs as part of the picture, and every per-gauge size scales by one real magnification law from the true camera apertures — in every edition, by default. The old eye-tuned tables are retired to a Dev-only A/B: several of them were corrections for a scaling bug the physical model fixes at the cause, and the uniform per-class sizing was what made grain read digital on close inspection. This changes grain and texture rendering on re-render — stocks that rendered identical grain now differ the way their datasheets say they should.
- Halation gets a Mode: True or Stylized. A starting point, not a lock. True is the measured, dense halation the physics gives; Stylized is a softer, bloomier classic look — wider halo, lower threshold, more of the frame participating. Switching re-seats the Halation and Irradiation sliders to that mode's values, and every slider stays yours to move afterward. Existing grades keep their dialed values until you touch the Mode.
- Instruments reads subject by subject. Sky Cyan, Sky Depth, Sky Saturation; then Foliage Yellow, Foliage Depth, Foliage Saturation; then Red Push, Red Depth, Red Saturation. The two Saturation sliders used to trail the whole list; now each target's three controls sit together.
- Diffusion's slider now travels 0–1. The look lives in the bottom of the old 0–5 sweep, so the slider now covers just that. A grade saved above 1 still loads and renders exactly as it did — nothing clamps.
- Edge Irregularity and Grain Tint are retired. Crystal Size Spread grows irregular grain better than jagged disc edges did — real crystals vary in size before they vary in outline — and a magenta–green cast on grain was never film. Both now render at neutral; a grade that had them dialed loses that component on re-render.
- Crystal Size Spread's cost now scales with the spread you ask for. Any setting above 0 used to pay the full worst-case crystal search — spread 0.1 cost the same as 1.0, double the frame time of spread 0. The search now bounds itself to the largest crystal the chosen spread can actually produce, so gentle spreads render at nearly spread-0 speed. The image is bit-identical at every setting; only the time changed.
Fixed
- Grain Only was quietly desaturating the picture. So were Halation & Irradiation and Clean Slate — the three presets that switch the negative off. The negative carries a baked saturation tame that belongs to the stock, and it was still running with no stock and no negative to tame, taking about 15% of the colour out with nothing on screen to account for it. An "Only" preset should do only the thing it names. It now does: those three leave your colour exactly where it was. Everything that actually runs the negative is unchanged.
- Digital to Negative now places mid grey on the Cineon standard. A correctly exposed grey card belongs at Cineon code 445 of 1023, and it was landing at 466 — 20.5 codes, a quarter stop, 1.64 printer points hot. Measured through the EMBR 3282 print LUT with Milky at its default, mid was reading 46.4 IRE where it should read 41.2 (the bare curve: 44.9 → 39.9). This was not a taste drift: the constant had been seated back when Exposure opened at −1 stop, and when Exposure moved to 0 for parity with the plugin, nobody re-seated it. The whole gap was that one number. Everything in Digital to Negative now sits a quarter stop lower, the shoulder still rolls 2.2 stops above mid where the emulsion put it, and the DCTL and the plugin finally agree. If you have a grade built on the old placement, it will open a quarter stop darker.
- Highlight Flare's glow now peaks at the source. A bright-but-not-blown source used to emit flare only from its rim — the local-contrast gate that stops flat walls from self-halating was also muting the source's own body — so the blurred glow drew as a faint donut with a dim ring hugging the source. Flare is superwhite-driven by definition, so its energy now fires on absolute brightness while the base halation keeps its flat-field rejection untouched. Flare at 0 renders exactly as before.
- Shadow Roll and Highlight Roll now grey out when Tone is Auto Per Stock. The datasheet drives the curve there, so both sliders were visible, draggable and silently ignored. They light up on Custom, which is where they have always applied.
- Open / Close now moves the curve's knees — the thing it always claimed to be. It used to be a separate reshaping stage stacked after the curve, acting inside fixed zones; at the zone edges the curvature snapped, which showed up as an arbitrary kink on Show Curves. That stage is deleted. The dial now drives the S the negative already has: closing walks the shadow and highlight rolls in toward middle grey — they start earlier, and the mids steepen between them; opening pushes them out and the curve extends toward linear. The knees are measured in stops, so they hold their place on the picture when you change Contrast, push or pull, or switch stocks. Middle grey never moves at any setting — at the negative you are controlling the neg, you don't get to move its mid grey — the ends stay pinned by Dmax and headroom, and 0 is still exactly the stock's own curve. It also works under Auto Per Stock tone now, walking the datasheet's own knees. A grade with Open/Close dialed renders differently; at 0 nothing changes.
- Auto film speed now knows 100 and 400. Stocks used to snap to the nearest of four speed classes, which put Portra 400 in the 500 class and Ektar 100 in the 50 class. Two real classes join the ladder — grain amount, size, halation and the rest interpolated from their neighbors — so Ektar 100 and Vision2 100T land on 100, Portra 400 and Pro 400H on 400, and Vision1 320T moves to 400 as its genuinely nearest class. Only Auto (Stock) resolves into them; the manual Film Speed choices are unchanged. Under Auto those five stocks render slightly differently.
Changed
- Inset Model is retired — Corrected is simply how the taper works now. The choice existed because the original taper drove a channel backwards on very saturated color, a visible fold in skies and water, and the fix reached far enough down the saturation scale to cost deep reds a little color. Carrying both and asking you to pick per shot was never the answer; the taper is being reformulated properly. Until then everything runs Corrected. Skies and water lose the fold; lips and deep reds sit slightly cooler.
Added
- Print Density (−1 Stop) — a tickbox in Digital to Negative (Cineon). Optional, off by default. Drops the exposure into the negative by exactly one stop so you can grade back up in the nodes underneath: the negative is then struck with more light, which is what builds density in the image. The real-film move — expose the negative generously, then print it down. One switch rather than a free exposure slider, because there is one useful value and one workflow.
- EMBR 3282 — a free print LUT set. Twenty-four 65³ LUTs going to Rec709 through the EMBR 2383 print simulation, with an authored pre-print grade on top: three white points (D55/D60/D65) × four treatments — base, Portrait (warmer through the mids, skin chroma up and background chroma down), Bleach (a 20% bleach bypass) and Orange Teal — in two input flavours. Cineon takes log negative, so put Digital to Negative in front of it. DWG Intermediate has that conversion baked in, so it drops straight onto graded footage with nothing in front. Self-contained either way: they expect Digital to Negative at its shipping defaults, so there is nothing to set up.
- Coupling revived — the dye matrix is real now (OFX Negative, Dye Saturation section): each stock's traced unwanted-absorption matrix (per generation — Vision2 5218 runs far dirtier than Vision3) is finally consumed. Coupling 0 = idealised pure dyes (the shipping look, unchanged), 1 = the datasheet's authentic cross-talk, 2 = muddier than life. Applied to the color relationships only: grey and exposure are pinned at any setting. Build My Own gets a Vision3-class generic matrix so the dial works without a stock.
- Rendering: Natural or Vivid (OFX Negative): pick the color starting point the stock renders from. Vivid is the stock's full spectral seeing — color separated the way the emulsion really sees it. Natural eases that seeing back to about a third for a calmer base to grade into, with the stock's tone, balance and grain untouched. More starting points can join the list later.
Fixed
- Neg. Saturation was a dead slider under Film Essentials and Clean Film. Both presets claimed the "FULL Negative section" but left Film Color off, and that switch does not merely disable a section — it pins the ported dye-color values to constants. Neg. Saturation, Richness, Vibrance and Highlight Wash were all visible, draggable and inert, with the responsible enable hidden so there was no visible cause. Both presets now enable it. Because the disabled path pins Neg. Saturation to its PASSTHROUGH value rather than its authored default, those two presets also rendered more saturated than a fresh node; they now match it. Grades built on Film Essentials or Clean Film will render slightly less saturated than before — that is the correction landing, not a new look.
- Digital to Negative: saturated color no longer folds back on itself (new "Inset Model"). Gamut Rolloff's taper had a knee steep enough that as a channel rose, the falling purity stripped the taper faster than the rise added it — so the output channel went down. In practice that is a visible fold in skies and water; everything below high saturation was always clean. Present in every EMBR release, and in the Digital to Negative DCTL, since launch. Inset Model (Negative → Digital to Negative) picks which one you get: Legacy is the original and stays the default, so every existing grade renders exactly as before; Corrected removes it. Neutrals, skin shadows and quiet color are identical either way — only saturated color moves, so switching an existing grade with sky or water in it will change it.
- "Reset All Sections" in the Negative now resets every section — it previously restored only the core emulsion sliders, leaving Response, Dye Crossover, Straight-Line Open, and most of Dye Saturation standing.
- The baked stock recentering is retired (tester-requested): every stock used to carry a fixed cool-green offset as an interim neutralizer. The stock model now lands neutral on its own — each stock's real white balance is baked into the stock itself, so the Scene Temp and Tint sliders are creative controls again instead of a correction you had to leave dialed in.
- Diagnostic views untangle: choosing a main View now clears any active overlay (Show Curves and friends) — the View selector can no longer appear frozen.
- 8mm Overscan: the sharp line at the top of frame is fixed at the source. The preset's frameline gap was thinner than its edge softness, so the frameline never fully resolved and read as a hard line under strong halation/diffusion. The Overscan preset now ships the validated geometry (gap wider than softness). Applies on preset selection; dialed nodes keep their values.
- Outputs are one image now: the per-output color trims (Negative-out saturation/richness/ vibrance taming, the Dev ACES weight trim) are removed — every Output Tone renders the same negative, differing only by its genuine encoding or print. Switching outputs no longer changes your grade.
Changed
- Negative defaults, the 2026-07-27 baseline (new nodes only; existing grades untouched): fresh nodes open on Vision3 250D (5207), graded for the print chain — Color Response 1.0, Contrast 1.0, Shadow Knee 2.0, Highlight Knee 3.05, Black Depth 3.0, Highlight Latitude 1.0, Neg. Saturation 0.85, plus a baked fifth-stop print-down (the stock is rated slightly slower so the negative hands the print richer density — under the hood; the Exposure slider stays at 0). The negative now ships standardized and the print does the rendering — the way the real system worked. Stock pickers are ordered by film speed, slowest to fastest.
- Exposure and Push / Pull sit above the sections as the two process dials — how the film was shot and how it was developed — applied on top of the selected stock. Contrast and Neg. Saturation live with the controls they shape, in Neg. Contrast and Dye Saturation, so each section's Reset fully manages its own contents. Section Resets restore the stock's character and leave Exposure and Push / Pull as you dialed them.
- Tone: Custom / Auto Per Stock (Neg. Contrast): choose who shapes the characteristic curve — your four sliders (default, the tuned EMBR curve) or values derived from the stock's own datasheet curves (sliders grey out while the sheet drives).
Changed
- Digital to Negative — defaults settled (OFX + the DCTL, kept in sync): after a week of living with the denser 07-23 re-dial, the baseline returns near launch values — Sat Density 0.500, Color Density 0.000, Shadow Color 0.100, Milky 0.150 (Gamut Rolloff stays 0.500). The DCTL and the plugin open at identical values, and the free EMBR 3282 LUT set is baked against them, so those LUTs land correctly after an untouched Digital to Negative. Look-safe for existing projects: defaults apply to new nodes only; grades keep their stored values.
- Color Weight recalibrated — the under-the-hood "filmic weight" character every stock carried was ~18% hot, and its dye-density coupling was silently costing ~0.15 stops of exposure on every stock. Rebased to what JVKE's eye found; slider values unchanged, stocks render with truer weight and exposure.
Fixed
- Photo stocks — skin tones and hues corrected (Portra 400, Portra 160, Ektar 100, Gold 200). The photo stocks' color response was fit from misread datasheet curves — the red record had absorbed a lobe belonging to the green layer and was several times too sensitive through the green band, which pushed skin toward yellow (the "not quite right" everyone felt). All four sheets were re-traced with a calibrated digitizer and refit; skin now lands within ~1.5° of the true spectral response (it was up to ~7° off, the wrong direction). The cine stocks (5219, 5213, 5203, 5207) were audited with the same rigor and are untouched — bit-identical to 1.0.2.
Changed
- Dye Saturation — saturation now behaves correctly in both directions. Lowering Neg. Saturation is a true uniform desaturation: it now reaches highlights, halation, and the negative's own color shifts (previously bright saturated colors — hot magentas — escaped the slider, and only an external node could tame them), and the slider now reaches 0 for a full black-and-white pull. Raising it uses real dye math — color deepens as it saturates instead of going neon (the density behavior from Balance v2, ported exactly). Grades with Neg. Saturation below 1 will render slightly more desaturated in their brights — part of this release's communicated look corrections.
- Grain — per-channel size + cleaner color under saturation. Grain now carries film's per-channel size hierarchy (blue coarsest, green finest — the real dye-layer structure), promoted into the visible texture instead of being buried in chroma. Both engines match: Real and Performance were tuned to the same film. And pushing grain Saturation no longer breaks into digital speckle — a soft-knee compresses the over-saturated color pockets while keeping the dye color. Grain Saturation is also recalibrated: the slider now runs 0–1 (the old 1–3 range only produced digital speckle) with a new 0.3 default across every output tone. Look note: this shifts grain texture slightly on existing grades when re-rendered (it doesn't touch color or tone) — a communicated grain refinement, not a silent change.
Added
- Output Tone carries the matching look calibration — under the hood. The handful of look values whose right baseline depends on the render intent now adjust automatically with the Output Tone: Same as Input (Negative) (the honest un-printed negative — relabeled to say so) renders clean black-grain and pulled-back negative-space color; Digital to Negative (Cineon) renders the print-referred baseline the 2383 LUT expects. Your sliders never move, Reset always restores the right baseline for the tone you're on, and switching tones never stomps dialed values — your adjustments ride on top, on every output.
- Digital to Negative — standalone release. The same locked DCTL from the Pro kit, now also sold on its own ($25, embr.jvke.us/2383) with a README covering install, the exact node chain into Resolve's built-in 2383 print LUTs, and the CST line for non-DWG timelines. Pro owners already have it — nothing to buy. Standalone buyers get a code that takes their $25 off Lite or Pro later.
Removed
- Veil is retired. Flare Falloff does its job better — the wide source-colored glow now comes from Highlight Flare with its falloff open, instead of a separate layer that stacked with it. Projects that used Veil load fine; the control no longer renders.
v1.0.22026-07-23
Added
- Grain Engine: Performance (Cached) — a new dropdown at the top of Grain (Real / Performance). Real is the live grain you already have — coupled dye-cloud color and baked-in softness bloom, computed every frame. Performance (Cached) is the exact same look built once into a cache: cleaner luma (from more samples) and fetch-speed Full-res playback (~21fps vs ~9 at 4K), rebuilt a moment after you change Size, Softness, Format, Speed or Push. Defaults to Real — your grades are unaffected unless you opt in. Falls back to Real automatically at Half/Quarter playback resolution.
v1.0.12026-07-21
Added
- Chroma Rolloff (Negative → Dye Saturation) — a film-honest saturation shoulder: it soft-compresses only the top of the color range, so over-saturated extremes come back toward believable while your vivid mids keep their pop. Hue-preserving (works in a perceptual space — reds stay red, no muddying). 0 = off. This is how film handles intense color — it rolls off rather than running to neon.
- Anamorphic-correct diagnostic views — every curve/graph overlay and the lens Grid Map now display undistorted on desqueezed (anamorphic) footage, and sit clear of the framing. A new Overlay Desqueeze control (in Views) sets your clip's squeeze factor if the host doesn't report it.
- Lens Grid Map view — a synthetic bokeh test chart (faint grid + bright discs) rendered through the active lens, so you can see the Petzval/Classic PSF shape across the whole frame. Toggle Show Chart.
- One diagnostic view at a time — turning on any Show-Curve / contribution / false-color / Grid Map view now switches off whatever other view was on. Newest wins; no more stacked, meaningless overlays.
- Highlight Desaturation (Negative → Build) — the film shoulder's path-to-white: highlights lose saturation toward neutral as they brighten, but the hue is held constant (computed in a perceptual space), unlike a digital clip that skews reds toward yellow. This is what makes film flatter skin as it brightens toward speculars. 0 = off (pass-through); engages through the highlights, spares the mids.
- Spectral Response (Negative → Build) — how the film sees color before any curve, now built from the real digitized Kodak 5219 spectral-sensitivity curves (fit to an observer matrix). 0 = off (your working color); 1 = the full 5219 seeing, which separates/intensifies color the way the emulsion does (skin warms, greens deepen); 2 = exaggerated. Neutrals stay perfectly clean at any value; 0 is a true no-op so Film Gamma OFF stays an exact passthrough. Applied at capture, before the tone curve (distinct from Coupling, the after-curve dye cross-talk). Grounded in film-bible ch.11 (film-as-observer).
- Film Resolution diagnostic views — a View combo (Output / Acutance / Edge Limit / Color Edges) for the three controls you can't judge by eye: the luma edge bump alone (grey-centered), the Edge Limit gate map (white = passing, dark = suppressed), and what Color Edges adds beyond luma. Also selectable from the main View menu.
- Trial demo now shows every section (each limited to Enable + one hero control; Chromatic Aberration fully open, Irradiation Enable-only) instead of hiding them — a fuller taste of the tool. Watermark URL updated to embr.jvke.us.
- Full Film Scan Cropped preset — the full-scan macro with a composed/cropped gate and perforations off, for a cleaner framed look. The original Full Film Scan (perfs + framelines) is unchanged.
- Tonal grain reduction — a Reduce Amount / Center / Width band in Grain → Tonal Balance that pulls grain down inside a tonal range (e.g. hold grain off skin). Keys on tone, distinct from the hue-keyed Skin Gentleness. Amount 0 = off. (Reuses the old Tonal Pivot / Offset / Range slots.)
- Grain tonal diagnostics — Show Curve draws the grain-vs-tone distribution as a white line over the image; Show Reduction Zone mattes the image through the reduced tones on black, so you can see where the reduction band lands.
Fixed
- Saved negative stocks now carry their color. The per-layer Layer Color curves (Shadow/Mid/High × Cyan/Magenta/Yellow), the Neutral Center, and Spectral Overlap were not included in a saved stock, so a stock authored with color character loaded back without it. All are now persisted.
- Grain is ~2.9x faster at HD. A tile-cache "optimisation" for fine grain was slower than no cache at all, and the default grain size sat right in the band that triggered it. Measured on a 35mm HD timeline: the default node went from 10fps to 28.6fps. Large and small grain sizes were never affected, which is why this read as "only slow at the default size". No visual change whatsoever — the grain is bit-identical; only the dispatch geometry changed. (4K is unaffected: the path never triggered there.)
Changed
- EMBR now opens on a film stock. A fresh node loads with the Negative on and set to Kodak Vision3 200T (5213), so you see film immediately instead of a clean passthrough — and thanks to the new recentering it sits neutral out of the box. Switch the stock to Custom or turn the Negative off for a clean start. Existing projects keep whatever stock and enable state they saved.
- Negatives now sit neutral out of the box. Every film stock carried a slight warm/magenta cast that needed a hand correction to sit right (and to match a calibrated reference); that recentering is now baked in, so a stock reads neutral the moment you select it. Custom negatives are unchanged. Your own Temp/Tint adjustments still layer on top as before. Existing stock-based grades will shift toward this corrected neutral on load.
- The Negative builder speaks film now. Its sub-sections were renamed for clarity: Curve → Neg. Contrast, Layer Color → Dye Crossover, Dye → Dye Saturation (Response is unchanged). Inside Dye Saturation the controls read Neg. Saturation · Chroma Rolloff · Color Weight · Richness · Highlight Desaturation · Vibrance. Labels only — every control does exactly what it did, your saved grades are untouched.
- Lens Character simplified. Character is now the single intensity dial (Strength is baked in at full and hidden — one fewer control doing the same job). Style picks Petzval or Classic as before.
- Halation defaults tuned. Threshold and Threshold Softness now start at maximum (only the brightest sources halate, with the softest fade-in); the Veil control caps at 0.5. Existing projects keep their dialed halation values.
- The grain engine got better — coupled dye-cloud color and a softer, more filmic texture. Grain now carries coarse colored dye clouds coupled to the silver structure (the way real film chroma grain behaves — not the old per-pixel color speckle) plus a baked-in softness bloom that de-speckles the harsh digital edge. Real is now this improved live engine, computed every frame; Performance (Cached) is the exact same look with cleaner luma (more samples) and cached playback speed. This is a deliberate look change: projects from 1.0.0 that used the old grain will load with the improved grain.
- Grain size & strength re-dialed per gauge. The default grain Size dropped 0.95 → 0.39 and Strength rose 0.05 → 0.07 (base values). Dialed on Regular-8 with the Strong blend, then checked across Super 8, 16mm and 35mm — the per-gauge magnification scales that one base so every format lands right. Smaller gauges also now get a built-in grain-contrast boost (16mm ×1.2, 8mm ×1.4; 35mm unchanged) applied under the hood — the Grain Contrast control still reads 1.0. Follow-up: the 8mm formats were re-dialed again against realism — Regular-8 grain is now smaller, slightly quieter and noticeably crisper (it turned out 8mm read oversized partly because the emulsion softness was being magnified along with the grain; reducing the softness, not growing the size, is what makes it read right), and Super 8 grain strength comes up. All under the hood — the sliders still read their defaults, and 16mm/35mm are untouched.
- Grain now ships matched to real film. The defaults were tuned against real 16mm 200T pushed two stops: the negative was AI-denoised to strip its own grain, so EMBR's grain could be compared against the real thing on the same frame with nothing else changing. Size 0.709 -> 0.95, Softness 0.333 -> 1.60, Blacks & Whites Reach 0.28 -> 1.00, and the tonal profile is now Blacks 0.00 / Shadows 0.65 / Mids 0.55 / Highlights 0.45 / Whites 0.28 — grain peaks in the shadows, not the mids, and true black carries none. Existing projects keep their own values.
- Cast & Crossover is now "Split Tone", and it is its own section — moved out from under Negative. It was never actually part of the negative: the kernel always ran it whether the emulsion was on or off, so nesting it under Negative was a UI lie (the section read "off" while the effect kept rendering). It is a look tool, and it now keeps working with the Negative bypassed — which is the whole point. The math is untouched and your saved settings carry over. The rename also keeps "crossover" meaning one thing: in the Negative, crossover is something that emerges from the layer curves crossing; in Split Tone it's a control you turn.
- Negative Strength no longer scales Split Tone, and the Negative Color toggle no longer switches it off. Both were Negative controls silently driving a section that isn't the negative. Behaviour change: a project saved before this update that used Negative Strength below 1 (or Negative Color off) with Cast & Crossover dialled will render differently on reopen — Split Tone now comes through at full value. Deliberate, and the reason it's called out here.
- Grain Blend modes are now Density / Gentle / Strong (were Multiply / Soft Light / Add) — perceptual names instead of blend-mode jargon. "Multiply" was a crude linear approximation of density grain; that slot now uses the real log-density model already in the engine — grain rides the image's own density the way emulsion does. Projects previously on Multiply get the corrected model. Gentle and Strong are unchanged apart from their names.
- Grain Softness now runs 0–4 (was −1–2) — no sub-zero sharpening, more creamy headroom at the top.
- Lens Character (Petzval) rebuilt as a true space-varying lens. The effect now works the whole frame edge equally — it used to work the sides and barely the top/bottom, and it behaved differently at different resolutions and aspect ratios; all of that geometry is fixed. The rendering itself graduated from a one-directional smear to a staged lens model: a gentle field-curvature falloff around a clean focal island, and oriented cat-eye bokeh that clips toward the frame edge the way a real pupil does. Bright highlights now prefer to shape the bokeh instead of steamrolling it (a hot lamp no longer prints a same-brightness bar), and a new Strength control sets the overall mix independently of the reach. The original swirl is not gone: a Style switch picks Petzval (the new lens model) or Classic — the original character where the brightest light takes over and bokeh rings shift their layout, now running on the corrected geometry. The controls read Style / Character / Strength / Center Clarity; saved projects load unchanged.
- Film Speed can now follow your stock. A new Auto (Stock) option on Film Speed reads the real ISO rating of the negative stock you've selected — pick Vision3 500T and the grain, halation, softness and the rest of the emulsion behave like 500-speed stock; switch to 50D and it all tightens up, automatically. Explicit speeds still pin exactly as before, and the per-section overrides are untouched. New nodes start on Auto (Stock); existing projects keep whatever speed they had.
- The grain panel got simpler. Coarseness and Bleed are retired — they cost more than they gave. Coarseness still engages automatically at large grain sizes (where it prevents visible patterning); Bleed's texture-bind behaviour stays, baked in at its tuned value — only the knob goes. The Grain Engine control moved up to the top of the Grain panel with Film Format and Film Speed, where a primary decision belongs; Blend stays in Grain Character. Saved projects load unchanged.
- Grime got an Enable — and now ships off. The scanner-crud overlay was doing more than anyone asked: it ran whenever its opacity was up, and the old values let it get way too strong. It's now a proper opt-in section with much subtler tuned defaults when you turn it on. Projects from 1.0.0 load with grime off — flip the new Enable to bring it back at your dialed values.
- Dust & specks now print at realistic densities. Most white specks land around 70% of white — only the occasional one is truly white — and dark dust reads as dark grey, not solid black (a rare particle still goes full black, the way a real gate hair can). Every particle also carries the scanner's tiny blur at every size: nothing renders as a hard-edged sticker anymore, down to the smallest speck.
- Grain Tonal Balance simplified. The five zone sliders now interpolate smoothly (a rounded curve instead of sharp angles) — applies to both the render and the new curve view. Blacks & Whites Reach is baked to its 1.0 default and hidden; Tonal Pivot / Offset / Range are replaced by the tonal-reduction band. The physical grain envelope is frozen at its default, so the default look is unchanged.
- The plugin is now "EMBR Film FX Pro" — the first tier of the Pro / Lite / Trial family. Label only: your saved grades and PowerGrades bind by plugin id (unchanged), so nothing breaks.
- New: Balance v2 DCTL — a reworked shot-balance primary. One Temp slider with a mode dropdown (CAT02 / Kelvin / Linear), calibrated 1:1 to Resolve's warm/cool but on a pure axis so skin stays cleaner than Resolve's; Saturation and Contrast each collapse to one slider + a mode; emoji axis cues; Contrast Pivot denominated in DI mid-grey. Ships alongside the original Balance (unchanged) — keep whichever you prefer.
- Hue DCTL — color-dot cues (🔴 🟠 🟡 🟢 🔷 🔵 🟣) on each vector for faster reading. Controls unchanged.
- HueWarp DCTL retired — the reworked Hue covers it; no longer bundled.
- Digital to Negative exposure now ships neutral (0); the OFX's redundant Negative Exposure control is hidden (dial exposure in the negative/emulsion section instead).
Fixed
- Cast & Crossover now works in Stock mode. It was visible but inert — the kernel skipped it on the baked-stock path. You can now layer a cast/crossover shift on top of any stock ("love KILN, want it warmer"). Untouched controls render identically to before.
- Presets no longer touch Output Tone — it's a setup decision, owned by you. Clean Slate used to flip Output Tone to "Same as Input" and never restored it when switching to another preset; now every preset leaves Input Color Space / Output Tone / Format / Speed untouched.
v1.0.02026-07-14First public release
Film FX OFX
Negative — build your own emulsion
- Negative Designer: per-layer H&D curves, base fog, dye density, interimage, and push/pull built on real photochemical structure, not a grade.
- Negative Color: stock cast and highlight/shadow crossover, with balance, fade, knee, and black-neutral controls.
- Negative Color master toggle: one switch strips the negative's color rendition to neutral.
- Two-component push/pull: halation and shadow noise follow push for free.
Optics
- Spectral chromatic aberration.
- Halation.
- Petzval field swirl.
- Vignette.
- Film Resolution: MTF-based softness that follows film speed and gauge magnification.
Bleach Bypass (silver retention)
- Ported Silver Crunch model with true skip-bleach stage physics: Print (shadows crush dense — the ENR/grunge look) vs Negative (highlights carry it — a milky wash).
- Density Crunch: saturated colors gain neutral density (subtractive dye).
- Hold Color: recover the image's own color under the bleached tone.
Print & tone
- Film Tone.
- Digital-to-Cineon output: convert footage to film-negative density for the print LUTs you already own.
- Printer Lights: per-channel color-timer trim on the negative (Cineon route), with Enable and Reset.
Grain
- Physically-modeled grain engine (full-resolution).
Film gate & motion
- Gate weave with format-accurate sprocket perforations (8mm, 16mm, 35mm 2/3-perf, 65mm), per-gauge sizing, and gate presets.
- Film Motion: per-gauge breathing plus an 8mm motion preset.
- Dust & specks: scanner/gate grime with a spawn/hold/crawl/blink lifecycle, size, and drift.
Setup & format
- Input color space (6 spaces) and "Same as Input" output.
- Film Format (gauge magnification) and Film Speed (emulsion intrinsic) as orthogonal axes.
- Output Tone (incl. Cineon) and preset library.
Analysis views
- False Color: measures input exposure to check for clipping before the look is applied.
- Crossover curves overlay on the image, live.
DCTL Kit & PowerGrades
- Entry pack: encrypted DCTLs plus PowerGrades, installed by name.
Packaging & licensing
- Signed and notarized macOS installer (universal, macOS 13+), installs the OFX and DCTLs in one double-click.
- Node-locked perpetual license — Lite 1 machine, Pro 2. Unlicensed use runs a watermarked trial.
Notes for beta testers
- Bleach Bypass changed model in the 1.0 release: the old Saturation slider is retired (Hold Color replaces it, and does the color job better). Projects saved on the 0.9.6 beta will render their bleach differently. New projects are unaffected.