On this page

Workflow guide

Start with your footage’s colour space, choose a film and decide how to finish the image. This guide explains each step, with setups for DaVinci Resolve and other OpenFX applications. Bold names match the plugin controls; the parameter reference describes them in detail. Explore the film collection, read how the emulation works or check application compatibility.

Find the section for your workflow:

  1. How Ashigrain works in any host: the sections from Installation to Control notes.
  2. Recipes for DaVinci Resolve: detailed recipes for the reference host, including four colour-management workflows.
  3. Recipes for other hosts: short recipes for Nuke, Fusion Studio, Flame and SCRATCH.

Each setup specifies the required colour conversions. Use a reference display to assess the finished image before delivery.

Installation

The installer puts the plugin at:

/Library/OFX/Plugins/Ashigrain.ofx.bundle

That is the top-level /Library, not the Library folder in your home folder. Host applications look for plugins when they start, so restart yours after installing. Where Ashigrain then appears depends on the host: see the compatibility matrix and Installation for the full steps.

Ashigrain keeps its own files in your home folder:

What Where
Activation of this Mac ~/Library/Application Support/Ashigrain/activation.json
Saved presets (default folder) ~/Library/Application Support/Ashigrain/Presets/
Debug log (only when Debug log is on) ~/Library/Logs/Ashigrain/ashigrain.log

Finding your way around the controls

Begin in Essentials for the controls used in most grades. For finer adjustments, the remaining sections follow the image from input through film development to output.

In Essentials, you will find:

  1. View: Simple or Pro (see Simple and Pro view).
  2. Input Color Space and Input Gamma, then Resolved as: what the node receives (see The Color Space fields).
  3. Output Color Space and Output Gamma, then Resolved as: what the node sends on.
  4. Preset: a factory film or look, or one of your saved presets (see Presets).
  5. Film look and that look’s Stock menu: the camera film (see Picking a film).
  6. Print film: the print film used in Print mode.
  7. Strength: how much of the film look you see. 1 is the full film rendering, 0 the unprocessed image (see Saturation and Strength).
  8. Exposure: the camera exposure, in stops.
  9. Grain amount: the grain, relative to the film’s datasheet.
  10. Halation amount: the halation, relative to the film’s own strength.

Simple and Pro view

New instances open in Simple view with Essentials (the film controls included), Presets and About. Switch View to Pro for the complete set of controls. After Essentials, the sections follow the processing order:

  1. Color Space: the details of the decode and encode: Source was display-referred video, Highlight expansion, Output White Point and HDR print white (nits).
  2. Film: the Mode (what the lab does with the developed film) and the Format. The camera film is picked in Essentials.
  3. Scene Light: the light the scene was lit by and how the footage was white-balanced.
  4. Camera: the Camera filter, the EI override and the Vignette, the lens falloff on the light before it reaches the film.
  5. Halation and Bloom: the glows the light makes inside the film. Rem-jet removed, in Halation, renders the film without its rem-jet backing or other antihalation layer, with much stronger halation. Where a repackager publishes a rating for the film without rem-jet, it also rates the film at it: Vision3 500T at EI 800, 250D at EI 400 and 50D at EI 100 (see Rem-jet removal).
  6. Development: push or pull processing (see Push and pull) and the negative’s tone and colour response.
  7. Grain and Resolution: the film’s grain and sharpness.
  8. Print or Scan: printer lights, print density, print contrast and mix in Print mode, scan balance in Scan mode. Only the section for the current Mode is shown; a Reversal render shows neither.
  9. Projection & Motion: gate weave and flicker on the finished image.
  10. Output & Debug: the debug views, the bypass switches and Split compare, for inspection.

Presets and About follow in both views. Switching views changes the controls you see, not the image. Hidden controls keep their values, so a grade made in Pro looks the same in Simple. The parameter reference lists the controls in the same order.

Picking a film

In both views, Essentials has the Film look menus. Film look groups the camera films by look: Natural, Vivid & saturated, Vintage & odd and Black & white. Pick a look, then a film in the Stock menu under it. Picking a look or a stock resets the controls that come from the film’s data, as a new stock always has, and keeps your relative adjustments. It also sets Preset to Custom. The film guide lists the films in each look.

You can also pick a film or a look from the Preset menu (see Presets). A film preset sets that film with every look control at the film’s defaults.

Print film, under the Stock menu, picks the print film for Print mode.

Print film offers every print film for every camera film, and picking a camera film selects its default print. A colour or black-and-white negative prints on any of the four colour print films or on Kodak B&W Print Film 2302. On 2302 a colour negative prints in black and white with an orthochromatic tonality (reds dark), because 2302 is blue-sensitive; on a colour print film a black-and-white negative prints near-neutral, with the print’s own slight tint. Ashigrain uses its generic black-and-white print curve only for a black-and-white negative that lists no print; every black-and-white negative in the menus lists all five. The film guide gives each film’s default print.

Every film Ashigrain ships is in the menus. Kodak Vision3 250D and 200T, Kodak Ektachrome 100D and Fujifilm Eterna 250D and 500, which earlier versions left out of the menus, are back in their look groups: a grade or preset that uses one opens on that film in its look menu and renders unchanged.

Presets

Preset (Essentials) applies a whole look in one step. It lists:

  • Custom: the controls do not match a preset.

  • Film presets, one for each camera film in the Film look menus, in menu order, as listed in the film guide. Each sets its film with every look control at that film’s defaults.

  • Looks, each built on one film:

    Look What it sets
    35mm cinema Kodak Vision3 500T printed on Kodak 2383, Super 35 (4-perf): the reference starting look
    Subtle Kodak Vision3 50D on Kodak 2383, with less grain (0.4), halation and bloom (0.5) and Strength 0.6
    16mm documentary Kodak Vision3 500T on 16mm, with grain amount 1
    Super 8 home movie Kodak Kodachrome 64 in Reversal mode on Super 8, with grain amount 1, gate weave and flicker on, and a vignette (0.4)
    Projected print Kodak Vision3 500T on Kodak 2383, Super 35 (4-perf), with gate weave and flicker on and a vignette (0.3)
    Bleach bypass Kodak Vision3 500T on Kodak 2383, with Saturation 0.5 and Print contrast 1.3
  • Your presets: every .json file in the default preset folder, ~/Library/Application Support/Ashigrain/Presets/, sorted by name and listed by file name without .json.

Picking a preset is one undoable change. It sets the film and every look control; a control the preset does not list takes the film’s default. It keeps two kinds of setting as they are:

  • the colour space: Input Color Space, Input Gamma, Source was display-referred video, Highlight expansion, Output Color Space, Output Gamma, Output White Point and HDR print white (nits), so a preset never changes how the footage is decoded or encoded;
  • the Output & Debug settings: Debug view, the bypass switches, Split compare and Split position.

Change any other control afterwards, including a Film look, Stock or Print film pick, and Preset shows Custom; your values stay. Picking Custom changes nothing. A node whose preset file has since been deleted or renamed also shows Custom, and picking a preset that can no longer be read shows an error and returns to Custom.

Saving a preset. In the Presets section, leave Preset file empty and press Save preset. Ashigrain saves every control to the default folder, under a name made of the stock and the date and time, fills in the path and selects the new preset in Preset. Rename the file in the Finder for a clearer name in the list; a node that used the old name then shows Custom. If your host does not show a new preset in the menu at once, it appears on a new node or when you reopen the project.

Presets in other folders. Type a full path in Preset file and press Save preset or Load preset to keep presets anywhere else; they do not appear in the Preset menu. Load preset and Reset to stock defaults set every control, the colour space and debug settings included, as one undoable change, and Preset then shows Custom.

The Color Space fields

The colour-space fields tell Ashigrain what it receives and what it should send on. Input Color Space, Input Gamma, Output Color Space, Output Gamma and the two Resolved as fields are at the top of Essentials. The other fields are in the Color Space section, shown in Pro view.

  • Input Color Space and Input Gamma are the primaries and the transfer function of the image coming into the node. Both default to Auto (from host); see How Auto resolves in each host.
  • Source was display-referred video marks an input as video even though its gamma is a scene gamma such as DaVinci Intermediate. Turn it on when the clip was Rec.709 video that a colour space conversion or the host’s colour management converted into a scene encoding such as DaVinci Wide Gamut / DaVinci Intermediate.
  • Highlight expansion (default 1) sets how far video highlights are expanded when the input is display-referred: with a display gamma (Gamma 2.2, Gamma 2.4, Gamma 2.5, Gamma 2.6, sRGB, Adobe RGB, DCI, Rec.2100 ST2084, Rec.2100 HLG), or with a scene gamma and Source was display-referred video on. Video white then lands 6 stops over mid-grey instead of about 2.5, giving the film response more highlight range. This does not restore detail already clipped in the source.
  • Output Color Space and Output Gamma are the encoding of the image going out. Both default to Same as input. Output White Point is D65 by default: a gamut whose own white is not D65 (P3-DCI, P3-D60, the ACES gamuts, DCI XYZ) is adapted so that the print’s white stays neutral. Gamut native (no adaptation) writes the colours as they are, in the gamut’s own white.
  • HDR print white (nits) sets how bright the print’s white is when the output gamma is Rec.2100 ST2084 or Rec.2100 HLG; see HDR output.
  • The two Resolved as fields show what the input and the output actually are, including what Auto chose.

Keep grading nodes before Ashigrain where you can. After it the film response has already been applied: the image is the finished print, not scene light.

How Auto resolves in each host

Auto uses the colour space the host reports through OpenFX colour management, when it is one Ashigrain can decode; Resolved as then says reported by the host. When the host reports no colour space, or one Ashigrain cannot decode, Auto assumes an encoding that depends on the host:

Host Auto assumes
Nuke, Natron Input Color Space Rec.709, Input Gamma Linear (linear light with Rec.709 primaries)
Every other host Input Color Space Rec.709, Input Gamma Gamma 2.4

Resolved as then reads Auto: the host reports no colour space and names what was assumed. Ashigrain assumes linear light in Nuke and Natron because these applications usually work in scene-linear. The reference host reports no colour space, so Auto always falls back there (see its recipes). Other hosts may or may not report one, which is why Resolved as shows what Auto chose. Baselight passes images in a linear tone curve with the grading stack’s primaries by default, which Auto does not detect. The compatibility page summarises this per host.

Whenever Resolved as names a space other than the one the node really receives, set Input Color Space and Input Gamma by hand.

Why a display output must be last

A display gamma in Output Gamma (Gamma 2.2, Gamma 2.4, Gamma 2.5, Gamma 2.6, sRGB, Adobe RGB, DCI, and the HDR gammas Rec.2100 ST2084 and Rec.2100 HLG) encodes the print for that display, clipped to the display’s range. Nothing may convert the image after that: no colour space conversion node, no output or display transform, no colour-managed output conversion. Anything that does reads display code as if it were scene-referred and converts it a second time.

If the node is not the last transform, give it a scene output gamma (DaVinci Intermediate, ACEScct, Linear, or a camera log): Same as input does this when the input is one. A scene gamma carries the print’s display light at scale 1.0: a closing conversion to Rec.709 / Gamma 2.4 with no tone mapping reproduces the display image.

Camera log input

Ashigrain decodes the common camera logs itself, so a log clip needs no opening colour space conversion. Set Input Color Space and Input Gamma to what the camera recorded and put Ashigrain on the clip directly:

[clip, camera log] → [your grade] → [Ashigrain] → [optional grade] → [closing conversion to the display]
Camera log Input Color Space Input Gamma
ARRI LogC3 ARRI Wide Gamut 3 ARRI LogC3 (EI 800)
ARRI LogC4 ARRI Wide Gamut 4 ARRI LogC4
Sony S-Log3 Sony S-Gamut3 or Sony S-Gamut3.Cine (as recorded) Sony S-Log3
Panasonic V-Log Panasonic V-Gamut Panasonic V-Log
Canon Log 3 Canon Cinema Gamut Canon Log 3
RED Log3G10 REDWideGamutRGB RED Log3G10
Fujifilm F-Log2 Fujifilm F-Gamut (Rec.2020 primaries) Fujifilm F-Log2
Nikon N-Log Nikon N-Gamut (Rec.2020 primaries) Nikon N-Log
DJI D-Log DJI D-Gamut DJI D-Log
Apple Log Rec.2020 Apple Log
Blackmagic Film Gen 5 Blackmagic Design Wide Gamut Gen 4/5 Blackmagic Design Film Gen 5

The other camera logs in the menus (S-Log and S-Log2, Canon Log and Canon Log 2, F-Log, L-Log, GP-Log2, REDlogFilm and the rest) are set the same way. Some hosts list F-Gamut and N-Gamut as Rec.2020; Ashigrain names them, with the same primaries.

  • Leave Source was display-referred video off: a camera log is scene light, so Highlight expansion is not used.
  • ARRI LogC3 (EI 800) decodes with ARRI’s EI 800 curve. ARRI’s curve differs slightly at other exposure indexes, so footage recorded at another EI decodes approximately.
  • GoPro GP-Log2 follows GoPro’s published formula, which puts 18 % grey at 0.0517 linear, about 1.8 stops under the 0.18 the other logs use. Raise Exposure to match as needed.
  • For Samsung Log footage, convert to a supported working space before applying Ashigrain.

Output. With Same as input the result is written back in the camera’s log, so the rest of the grade and the closing conversion treat it as they would the camera footage: close with a conversion from that log to the display, with no tone mapping (see DaVinci tone mapping). To hand on another working space instead, such as DaVinci Wide Gamut / DaVinci Intermediate, set Output Color Space and Output Gamma to it. To make Ashigrain the last transform, set a display output (see Why a display output must be last).

Approximated colour spaces

Some colour spaces in the menus have no published maths. Ashigrain approximates each of them with the nearest published curve or gamut, so they can differ from what your host’s own colour space conversion does with the same setting:

Kind Options Approximated with
Gamma Blackmagic Design Film, 4K Film, 4.6K Film, Broadcast Film Gen 4, Pocket 4K Film Gen 4, Pocket 6K Film Gen 4 Blackmagic Design Film Gen 5
Gamma Blackmagic Design Video, Video Gen 4, Extended Video Gen 4, Video Gen 5, Extended Video Gen 5; Rec.709-A the BT.709 camera curve
Gamma REDgamma3, REDgamma4 RED Log3G10
Gamma DJI D-Log2 DJI D-Log
Gamma Vivo Log, Insta360 I-Log Sony S-Log3
Gamma AstroDesign A-Log Cineon Film Log
Gamma ST2084 300, 500, 800, 1000, 2000, 3000 and 4000 nit ST 2084 with 1.0 at that many nits
Gamma Stops (18% Gray) a log2 scale with 18 % grey at code 0.5 and 1/16 of the code range per stop
Color Space Blackmagic Design Film Gen 1, 4K Film Gen 1 and Gen 3, 4.6K Film Gen 1 and Gen 3, Pocket 4K Film Gen 4 Blackmagic Design Wide Gamut Gen 4/5
Color Space Blackmagic Design 4K Video Gen 3, 4.6K Video Gen 3, Video Gamut Gen 4, Video Gen 5 Rec.709
Color Space DJI D-Gamut2 DJI D-Gamut
Color Space Vivo Wide Gamut, Apple Wide Gamut Rec.2020

For consistent colour from these formats, use your application’s own transform to convert into a supported working space such as DaVinci Wide Gamut / DaVinci Intermediate. Match Ashigrain’s input settings to that space.

HDR output

For an HDR deliverable, make Ashigrain the last transform and encode the print for the HDR display:

Control Setting
Output Color Space Rec.2100 (the deliverable’s primaries)
Output Gamma Rec.2100 ST2084 (PQ) or Rec.2100 HLG
HDR print white (nits) 203 (default), 48 to 1000

The HDR gammas are display gammas: nothing may convert the image after Ashigrain (see Why a display output must be last). The host must deliver the node’s output unchanged, with its output set to the same Rec.2100 encoding.

HDR print white (nits) is the luminance of the print’s white: clear film, with no dye in it, seen through the projector. It is active only when the output gamma is Rec.2100 ST2084 or Rec.2100 HLG (also through Same as input).

  • Default 203 nits. ITU-R BT.2408 puts HDR reference white at 203 cd/m². At 203 the print sits where an SDR version of the same grade would, and SDR titles and graphics placed at that reference white match it.
  • Range 48 to 1000 nits. 48 nits is the cinema projection standard (14 foot-lamberts) for a darker, theatre-like image; higher values are a brighter projector.
  • Everything scales with it. Every luminance in the print is a fixed fraction of print white, so the setting works like a brighter projector lamp: 406 nits doubles every luminance, one stop brighter, and keeps the print’s contrast and colour.

Why the film sets the peak. A projected print cannot be brighter than clear film: where the print has no dye it passes the projector’s full light, and every other part passes less. So the print white you set is, in practice, the peak of the HDR image, as on a cinema screen, and the rest of the HDR range is left unused. Ashigrain does not clip at print white. It clips only at the signal’s own peak: 10 000 nits for PQ, and for HLG the 1000-nit nominal display peak.

  • PQ writes each pixel’s display luminance directly in nits (SMPTE ST 2084): print white at 203 nits is PQ code 0.58.
  • HLG writes the ITU-R BT.2100 HLG signal for a 1000-nit display with system gamma 1.2: print white at 203 nits is 75 % HLG, as BT.2408 recommends. An HLG display of another peak adapts the signal itself.

What HDR print white does not change.

  • Scan mode writes a scan, not a projected print: the scan’s highlights stop at display white 1.0, which PQ and HLG place at 203 nits.
  • With Bypass Branch on, the output is the exact inverse of the input decode, whatever HDR print white is.
  • Rec.2100 ST2084 (Scene) and Rec.2100 HLG (Scene) are scene gammas (the BT.2100 camera-side curves applied to scene light), for carrying the image to a closing colour space conversion, not for display.
  • The ST2084 N nit options are approximated display gammas with 1.0 at N nits (see Approximated colour spaces); HDR print white does not apply to them.

HDR input. Rec.2100 ST2084 or HLG as Input Gamma decodes 203 nits to display white 1.0, like SDR white, and then takes Highlight expansion as any display gamma does. Brighter HDR highlights go on above that.

Before and after

For a useful before-and-after comparison, match the input encoding and apply the display conversion once. Read Resolved as to see which colour space Auto selected. Enable Source was display-referred video when Rec.709 video has been converted into a scene encoding, so highlight expansion behaves as intended. This comparison helps you assess your colour setup; it is not a measurement against photographed film.

Scene light and RAW

Ashigrain follows the film chain in order: the scene is lit by a light, the negative is exposed through the camera filter at the metered exposure, it is developed, and then the lab balances the colour, per shot, on a grey card. The light is set in the Scene Light section, the camera filter in the Camera section and the exposure with Exposure in Essentials; the balance is in the Print section (or the Scan section in Scan mode). The film stock guide lists each stock’s design light and explains the camera filter.

Balanced footage

Most footage is white-balanced: a white or grey surface is neutral in the image, whether the camera balanced it automatically or you matched it in the grade. Leave Input white balance at Balanced.

Scene light says what light the film saw. At Stock design light (the default) the scene is lit by the light the stock is balanced for, 3200 K tungsten for tungsten stocks and 5500 K daylight for daylight and black-and-white stocks, so the film renders it neutral.

When you know the scene was lit differently, set Scene light to Custom and enter it: Light temperature in kelvin (about 3200 K for studio tungsten, 5500 to 5600 K for daylight and HMI, 6500 K and up for overcast sky and shade) and Light tint in CC units (positive magenta, negative green, for example −30 for fluorescent green). The negative records the scene warmer or cooler, as film would, and the print or scan timing brings it back towards neutral, leaving the film’s own crossover. In Reversal mode there is no print or scan timing, so the cast stays. Colour reversal film in Scan mode receives grey-card scan timing and scan balance. Add a Camera filter (85 or 80A) where a camera operator would have used one.

RAW footage

Decode RAW footage at a fixed white balance, for example 5600 K, not As Shot. A fixed decode keeps the colour of the light in the image, as film would see it, and gives every clip the same starting point.

Control Setting
Input white balance Fixed at decode white
Decode temperature the decode’s colour temperature, for example 5600
Decode tint the decode’s tint in CC units, usually 0

Ashigrain then takes the decode white as the scene light: a surface that is white in the decoded image is treated as white under that light. Scene light is not used in this mode. Footage decoded at As Shot or balanced in the grade is balanced footage: use Balanced instead.

Adjusting the print and scan balance

Ashigrain balances the print using a simulated 18 % grey card under your chosen lighting and camera filter. It does not analyse a grey card in your footage. The simulated card sets the target print density; your Exposure adjustment still makes the shot lighter or darker.

  • Printer light R, G and B and Print density are offsets in printer points on top of that timing (Print mode). At 0 the grey card prints on the aim. A black-and-white print film has one layer, so only Print density times it.
  • Scan balance R, G and B are offsets in points on top of the grey-card scan balance (Scan mode, colour negative and colour reversal films). At 0 the grey card scans to 18 % grey.

Print contrast (Print section) scales the print’s densities about the print aim, the density the grey card prints to. Above 1, shadows print denser and highlights lighter; below 1, the reverse. The grey card stays on the aim, so the timing above still holds. At 1 the print follows the print stock’s datasheet curves. It applies to colour and black-and-white prints, in Print mode only.

Mix (Print section) blends the print with a flat scan of the same negative, in display light. The scan is scaled so that the 18 % grey card has the same luminance in both, so the mix changes the look and not the exposure. At 1 you get the full print; at 0 the scan look, flat and low in contrast, on the same display. Values in between blend the two. With a colour film, the grey card at 0 is neutral where the print may tint it, at the same brightness. Mix applies in Print mode only, to colour and black-and-white prints.

Push and pull

Push/Pull (Development section) sets how many stops the film is pushed (developed longer) or pulled (developed shorter). It changes only the development, not the exposure. A photographer who pushes a film also rates it faster, so to reproduce that, set EI override (Camera section) to the pushed speed, for example 1600 for Portra 800 pushed one stop, or lower Exposure by the same number of stops. How the development changes depends on the film:

  • Documented push. Kodak publishes push curves for two films: Portra 800 (Push 1 at EI 1600 and Push 2 at EI 3200) and T-Max P3200 (−1, +1 and +2 stops from EI 800, that is EI 400, 1600 and 3200). Inside that range Ashigrain uses Kodak’s curves, blending between neighbouring curves for fractional stops. Beyond it, it starts from the nearest documented curve and applies the generic push to the remaining stops: any pull on Portra 800, a pull beyond −1 on T-Max P3200, or a push beyond +2 on either film.
  • Generic push (negatives). Every other colour and black-and-white negative: a push raises the contrast and adds a little fog, a pull lowers the contrast. No datasheet publishes push data for these films, so the amounts are an approximation.
  • Reversal push. Kodachrome 64, Velvia 50, Ektachrome P1600, Ektachrome 100D and Tri-X Reversal 7266 use a generic reversal push, also an approximation. Each stop of push makes the film respond as if it had about 0.8 stop more light, raises the contrast about the mid-grey, and lowers the maximum density (the deepest blacks) by 0.1. A pull does the opposite for speed and contrast. At 0 the reversal push is not applied at all. Any other value also limits each layer’s density to that maximum, so a deep shadow that Contrast, the toe and shoulder controls or the extension beyond the plotted curve had taken past the film’s plotted maximum is clipped as soon as Push/Pull leaves 0, even for a very small push.
  • Ektachrome P1600. All of its data is already at Push 2 (EI 1600, process E-6P), so Push/Pull counts from EI 1600: 0 is the film as rated, +1 is EI 3200, and negative values pull it back towards normal development.
  • Velvia 50’s datasheet states a push/pull range of −½ to +1 stop but prints no curves; Ashigrain does not limit Push/Pull to it.

Saturation and Strength

Three more controls shape the developed image:

  • Saturation method (Development section) sets the pivot that Saturation scales the colour about. All three methods work on film density, leave neutrals and the grey card alone, and are not used on black-and-white stocks.
    • Normal scales about the stock’s neutral axis (the balance of the developed grey card). It is the default and keeps the earlier behaviour.
    • Even keeps the midpoint of the layers, like HSL saturation.
    • Dense keeps the most-exposed layer, like HSV saturation, so stronger colours also go darker, for a denser look. On a colour reversal stock the most-exposed layer is the least dense one.
  • Saturation (Development section) scales the negative’s colour in density about the pivot the Saturation method sets, after the interlayer effects. Neutrals stay neutral and the grey card’s timing does not change. 0 gives a monochrome negative, 1 leaves it unchanged, and values above 1 are more colourful. It is not used on black-and-white stocks.
  • Strength (Essentials) blends the film rendering with the unprocessed input, converted only from the input to the output colour space: 1 is the full film rendering, 0 the unprocessed input. The blend is applied before gate weave and flicker, so the whole frame moves together. It is not applied in the debug views.

Scan mode

Choose Scan in Mode (Film section, Pro view) for a flat, log-like starting point for your grade. Scan supports colour negatives, black-and-white negatives and colour reversal films. It retains the film’s grain, halation, bloom, sharpness and tone response, without adding the print look. In Scan mode the plugin hides the Print section (printer lights, print density, mix) and shows the Scan section with Scan balance R, G and B in its place; Print film stays in Essentials but is not used.

The scan is written in Output Color Space and Output Gamma, with 18 % grey at that gamma’s grey code. Set the input fields for the image the node receives and keep the output at Same as input, then grade after the node as you would log camera footage:

[clip → working space] → [Ashigrain, Mode = Scan] → [your grade] → [closing conversion to the display]

A display Output Gamma gives a scan encoded for the display; it must then be the last transform, as above.

Scan-mode grading

A scan is flat on purpose: low contrast, lifted blacks and muted colour, like a log camera image. To grade it:

  1. Set the exposure and the light with Exposure, Camera filter and Scene light in Ashigrain itself (see Scene light and RAW). They change the light reaching the film, so grain, halation and bloom respond to them as they would on set.
  2. The scan is balanced on the same simulated grey card. Adjust Scan balance R, G and B to offset that balance (colour negative and colour reversal films).
  3. Add contrast and colour in the nodes after Ashigrain.
  4. Leave the closing conversion to map the result to the display.

Printer lights are not used in Scan mode; use scan balance or your grade instead.

Getting a consistent result

  • Read both Resolved as fields. The input one should name the space the node really receives; if it says Auto: the host reports no colour space and the assumed space is not what the node receives (for example in a DaVinci Wide Gamut project), set the input fields by hand.
  • Turn on Split compare (Output & Debug, in Pro view) to see the node’s input on the left and Ashigrain’s result on the right. When a later transform converts the whole frame, both halves are converted alike. When Ashigrain is the last transform with a display output, nothing converts the left half, so a scene-referred input such as DaVinci Intermediate or a camera log looks flat there; that is expected.
  • If the image looks washed out or doubly contrasty, a display output is being converted again, or a tone mapping (such as a DaVinci tone mapping) is on after the node. If it looks dark with dull highlights, Source was display-referred video is off for Rec.709 video that was converted into a scene encoding. See Troubleshooting.
  • Check grain and fine highlight detail at full resolution before delivery; proxy playback has less detail.
  • To see one effect on its own, set Debug view (Output & Debug). Grain only shows the density change the grain adds, after the resolution softening, as variation around mid-grey: a change of 0.125 density reaches white or black. Halation only shows the halation and bloom light added to each film layer on black, with white at the exposure of the 18 % grey card. Both are clipped to the range 0 to 1, and a black-and-white film shows its one layer as grey. A grain or halation stage that is off or bypassed shows plain mid-grey or plain black. The parameter reference gives the scale of every view.

Control notes

Scan balance R, G and B affect colour negative and colour reversal films in Scan mode only. They are not used on black-and-white scans, even if the host leaves them visible.

In DaVinci Resolve

DaVinci Resolve is the primary application used to develop and test Ashigrain. Find the plugin in the Effects library under OpenFX.

Auto in Resolve

Auto uses the colour space the host reports through OpenFX colour management. DaVinci Resolve 21.1 reports every image as Raw (no colour space), so Auto falls back to Rec.709 / Gamma 2.4 and Resolved as reads Rec.709 / Gamma 2.4 (Auto: the host reports no colour space).

That default suits workflow (a) below. The other workflows need explicit input settings. In a DaVinci Wide Gamut timeline, a Color Space Transform sandwich or a colour-managed project, set Input Color Space and Input Gamma by hand.

Four colour-management workflows

These four setups are designed to give the same film response from the same Rec.709 source, provided the surrounding conversions add no tone or gamut mapping.

In every workflow, leave Highlight expansion at 1 and put Ashigrain on the Color page as a node. It also works as a clip effect on the Edit page, but the Color page shows where it sits relative to the colour-space conversions.

(a) Directly on a Rec.709 clip

For a project that is not colour managed and whose clips are Rec.709 video.

Resolve: color science DaVinci YRGB, timeline color space Rec.709 Gamma 2.4.

Node tree:

[your grade] → [Ashigrain]

Ashigrain:

Control Setting
Input Color Space Rec.709 (or Auto (from host), which falls back to Rec.709 in Resolve)
Input Gamma Gamma 2.4 (or Auto (from host))
Source was display-referred video off (not used with a display gamma)
Output Color Space Same as input
Output Gamma Same as input

The output is Rec.709 / Gamma 2.4, a display gamma, so Ashigrain is the last node. This is the reference the other workflows are compared with.

The film response only sees the range a Rec.709 image holds. Highlight expansion adds highlight range, but a camera-log clip in a wide-gamut workflow gives the film more to work with.

(b) A DaVinci Wide Gamut / Intermediate timeline

For a project whose timeline works in DaVinci Wide Gamut / DaVinci Intermediate, with Resolve’s output transform converting the timeline to Rec.709 / Gamma 2.4.

Resolve: color science DaVinci YRGB Color Managed with the color processing mode set to custom, Timeline color space DaVinci WG/Intermediate, Output color space Rec.709 Gamma 2.4, and the Output DRT (output tone mapping) set to None. A DaVinci output tone mapping re-tone-maps the print; see DaVinci tone mapping.

Node tree:

[clip → DWG/DI] → [your grade] → [Ashigrain] → [optional grade] → output transform DWG/DI → Rec.709 Gamma 2.4 (Output DRT None)

Ashigrain:

Control Setting
Input Color Space DaVinci Wide Gamut (set by hand; Auto would fall back to Rec.709)
Input Gamma DaVinci Intermediate
Source was display-referred video on if the clip was Rec.709 video; off for camera footage (log or raw)
Output Color Space Same as input
Output Gamma Same as input

The output stays in DaVinci Wide Gamut / DaVinci Intermediate, so nodes after Ashigrain grade in the timeline space and the output transform does the only conversion to the display. With a Rec.709 clip and the switch on, this matches workflow (a).

(c) The Color Space Transform sandwich

For a project that is not colour managed, where Color Space Transform nodes take Rec.709 video into DaVinci Wide Gamut / DaVinci Intermediate and back.

Resolve: color science DaVinci YRGB, timeline color space Rec.709 Gamma 2.4.

Node tree:

[CST 1: Rec.709 / Gamma 2.4 → DWG / DI] → [your grade] → [Ashigrain] → [optional grade] → [CST 2: DWG / DI → Rec.709 / Gamma 2.4]

CST 1 (opening Color Space Transform):

CST setting Value
Input Color Space Rec.709
Input Gamma Gamma 2.4
Output Color Space DaVinci Wide Gamut
Output Gamma DaVinci Intermediate
Tone Mapping Method None
Gamut Mapping Method None
Apply Forward OOTF, Apply Inverse OOTF off

Use Gamma 2.4, not Rec.709 (Scene): see DaVinci tone mapping.

Ashigrain:

Control Setting
Input Color Space DaVinci Wide Gamut
Input Gamma DaVinci Intermediate
Source was display-referred video on
Output Color Space Same as input
Output Gamma Same as input

CST 2 (closing Color Space Transform):

CST setting Value
Input Color Space DaVinci Wide Gamut
Input Gamma DaVinci Intermediate
Output Color Space Rec.709
Output Gamma Gamma 2.4
Tone Mapping Method None
Gamut Mapping Method None
Apply Forward OOTF, Apply Inverse OOTF off

Display-output variant: leave out CST 2, make Ashigrain the last node and set its Output Color Space to Rec.709 and Output Gamma to Gamma 2.4. Nothing after the node may convert it (see Why a display output must be last).

(d) A colour-managed project

For a project where Resolve’s colour management converts Rec.709 clips into DaVinci Wide Gamut / DaVinci Intermediate and back.

Resolve (Project Settings → Color Management):

Setting Value
Color science DaVinci YRGB Color Managed
Color processing mode custom (so each field can be set)
Input color space Rec.709 Gamma 2.4
Timeline color space DaVinci WG/Intermediate
Output color space Rec.709 Gamma 2.4
Input DRT None
Output DRT None

With both DRTs at None, the input conversion is the same as CST 1 in workflow (c) and the output conversion the same as CST 2.

Node tree:

(colour management: Rec.709 → DWG/DI) → [your grade] → [Ashigrain] → [optional grade] → (colour management: DWG/DI → Rec.709 Gamma 2.4)

Ashigrain: as in workflow (c).

Control Setting
Input Color Space DaVinci Wide Gamut
Input Gamma DaVinci Intermediate
Source was display-referred video on
Output Color Space Same as input
Output Gamma Same as input

Do not set a display Output Gamma here: colour management converts the node’s output to the output colour space afterwards, so a display output would be converted twice.

Camera log in Resolve

A camera log clip needs no opening Color Space Transform: set the input fields as in Camera log input and close with a Color Space Transform or an output transform from that log to the display, with tone mapping None. For a display output, see the display-output variant of workflow (c).

  • ARRI LogC3 (EI 800) is the LogC3 of Resolve’s Color Space Transform.
  • Resolve’s Color Space Transform lists F-Gamut and N-Gamut as Rec.2020.

Resolve does not publish the maths of some of its colour spaces, and Ashigrain approximates those. For footage in one of these spaces where the colour matters, convert it with Resolve’s Color Space Transform to DaVinci Wide Gamut / DaVinci Intermediate and use workflow (c) instead of setting the space in Ashigrain.

HDR output in Resolve

For an HDR output, no closing Color Space Transform and no colour-managed output conversion may follow the node, and the timeline and output must be set to the same Rec.2100 encoding. Check the result on an HDR reference display before delivery.

Resolve places SDR white at 203 nits for Rec.2100 (“Use 203 nits reference”), where Ashigrain’s default HDR print white puts the print’s white. Resolve does not document what its “(Scene)” options do, so do not assume they match Ashigrain’s Rec.2100 ST2084 (Scene) and Rec.2100 HLG (Scene).

DaVinci tone mapping

The workflows above need tone mapping None in every Color Space Transform and DRT. The print already has its own tone curve, the film’s; a DaVinci tone mapping after Ashigrain applies a second one. What each option changes:

  • DaVinci, Simple, Luminance Mapping tone mapping (Color Space Transform Tone Mapping Method, or the colour-managed Output DRT) compress the highlights and change contrast on the way out, so the print’s highlights and blacks no longer match workflow (a). Resolve does not publish their maths.
  • Input DRT or opening tone mapping other than None reshapes the video before Ashigrain sees it, so Highlight expansion no longer undoes a plain Gamma 2.4 decode.
  • OOTF (Apply Forward OOTF / Apply Inverse OOTF) adds a scene-to-display adjustment Resolve does not document.
  • Rec.709 (Scene) is not a substitute for Gamma 2.4 when your source is display-referred Rec.709 video. Use Gamma 2.4 for the video workflows above.

In an ACES project (color science ACEScct), set Input Color Space to ACES AP1 and Input Gamma to ACEScct. The ACES Output Transform applies its own tone scale on top of the print, so the image does not match the workflows above. For the print as Ashigrain renders it, set ACES Output Transform to No Output Transform and, on clips that end in Ashigrain, set Output Color Space Rec.709 and Output Gamma Gamma 2.4 with Ashigrain as the last node. That setting applies to the whole project, so clips without Ashigrain lose their output transform too.

Recipes for other hosts

Use these setups in other OpenFX applications. Check Resolved as to confirm the input, then assess your output before delivery. See compatibility and setup notes for your application, or contact us for help.

Nuke

  • Finding it. Nuke adds a menu item for each OpenFX plugin to its main menu. In Nuke, Ashigrain uses the CPU unless Nuke provides Metal (see CPU rendering).
  • Input. Ashigrain assumes Nuke passes images in a scene-linear working space with Rec.709 primaries: when Nuke reports no colour space, Auto resolves to Input Color Space Rec.709 and Input Gamma Linear. If Nuke reports a colour space Ashigrain can decode, Auto uses it.
  • ACES. If your OCIO config is ACES with ACEScg as the working space, set Input Color Space to ACES AP1 and Input Gamma to Linear. For any other working space, set the input fields to match it.
  • Output. Keep Output Color Space and Output Gamma at Same as input, so the result stays in the working space and the Viewer’s display transform converts it for viewing. Do not set a display output gamma, since the Viewer would convert it a second time (see Why a display output must be last).

Fusion Studio

  • Input. When Fusion Studio reports no colour space to the plugin, Auto assumes Rec.709 / Gamma 2.4. That is right only for Rec.709 video. If your comp works in another encoding, for example linear light, set Input Color Space and Input Gamma to it.
  • Output. Keep Same as input so the tools after Ashigrain receive the encoding they expect. Set a display output only when nothing converts the image afterwards.
  • Rendering. Ashigrain renders on Metal if Fusion Studio offers it to plugins, otherwise on the CPU.

Flame

  • Finding it. Ashigrain appears in the Batch node bin, Batch FX, the Timeline FX ribbon and the Modular Keyer node bin. In Batch, Flame shows an RGBA input as two sockets.
  • Controls. Flame has no control pages: it shows Ashigrain’s controls in tabs after the “Plugin” tab, one column per group (see Flame shows controls in columns). Ashigrain renders on the CPU in Flame (see CPU rendering).
  • Input. When Flame reports no colour space to the plugin, Auto assumes Rec.709 / Gamma 2.4. Set Input Color Space and Input Gamma by hand to the colour space of the clip entering the node.
  • Output. Keep Same as input unless Ashigrain is the last transform (see Why a display output must be last).

SCRATCH

This recipe also applies to Live FX.

  • Finding it. SCRATCH scans /Library/OFX/Plugins, where the installer puts Ashigrain.
  • Version. Ashigrain needs SCRATCH 9.4 or later. Auto can read the input’s colour space from the host only in SCRATCH 9.8 and later, which handle OpenFX 1.5 colour spaces.
  • Input. If SCRATCH reports the input’s colour space and Ashigrain can decode it, Auto uses it and Resolved as says reported by the host. Otherwise Auto assumes Rec.709 / Gamma 2.4; set the input fields by hand when that is not what the node receives.
  • Output. Keep Same as input unless Ashigrain is the last transform (see Why a display output must be last).
  • Rendering. Ashigrain renders on Metal if SCRATCH offers it to plugins, otherwise on the CPU.