Film Emulation Engine
A deep dive into the color science, parametric modeling, and physical simulations driving the HeliosCam film engine.
The Parametric Film Engine
Unlike basic filter apps that rely solely on baked 3D LUTs, HeliosCam's primary film engine is fully parametric. Each film stock is essentially a mathematical parameter set injected into a unified processing pipeline. This means the emulation is resolution-independent, infinitely adjustable, and mathematically composable without the banding artifacts often introduced by low-resolution LUTs.
Parametric Stock Model
| Parameter | Description |
|---|---|
| EV | Exposure compensation (stops) applied before the tone curve. |
| S_global | Global saturation multiplier. |
| W | White point anchor for the Hable tone mapping operator. |
| C_chrome | Color-Chrome intensity, replicating Fujifilm's deep color effect which deepens highly saturated colors. |
| M_crosstalk | A 3×3 inter-layer dye coupling matrix governing color contamination between emulsion layers. |
| f_R, f_G, f_B | Per-channel density and contrast curves (S-curves) defining the film's tone response. |
| H_v(h) | Hue-vs-Hue remapping curve (36-bin interpolation) driving the specific color signature. |
| H_s(h) | Hue-vs-Saturation remapping curve, defining how specific hues are selectively saturated or muted. |
Built-in Film Stocks — Parametric
HeliosCam bundles 11 highly accurate parametric film simulations modeled against popular color science profiles.
| Stock Name | Sat (S) | Chrome (C) | White Point | Character |
|---|---|---|---|---|
| 1. PROVIA / Standard | 1.10 | 0.15 | Standard | Balanced all-rounder, mild S-curve (0.04) |
| 2. Velvia / Vivid | 1.30 | 0.30 | Standard | High contrast/saturation, royal blue→magenta shift |
| 3. ASTIA / Soft | 1.12 | 0.15 | Standard | Gentle portrait, soft S-curve |
| 4. CLASSIC CHROME | 0.90 | 0.00 | Standard | Muted color, high shadow contrast, yellow/cyan suppression |
| 5. REALA ACE | 1.06 | 0.12 | Standard | True-to-life high fidelity |
| 6. PRO Neg. Hi | 1.04 | 0.00 | Standard | Crisp portrait contrast |
| 7. PRO Neg. Std | 0.94 | 0.00 | Standard | Flat studio contrast, linear curve |
| 8. CLASSIC Neg. | 1.05 | 0.00 | Standard | Hard print contrast, cyan shadows, unique green response |
| 9. NOSTALGIC Neg. | 1.00 | 0.00 | Standard | Amber shadow tint, soft highlight shoulder |
| 10. ETERNA / Cinema | 0.78 | 0.00 | 5.2 | Flat cinema gamma, beautifully muted |
| 11. ETERNA BLEACH BYPASS | 0.60 | 0.00 | 5.2 | Severe desaturation, high contrast |
Inter-Layer Crosstalk Matrices
The Physics of Dye Coupling
In real photochemical film, light passes through 3 dye emulsion layers (cyan, magenta, and yellow). Because these layers sit directly on top of each other, chemical reactions in one layer partially affect the development of adjacent layers. This is known as inter-image effect or crosstalk. HeliosCam explicitly models this via 3×3 mixing matrices.
The diagonal values of the matrix represent self-contribution (e.g., Red remaining Red). Off-diagonal values dictate the cross-contamination. Notice how vividly saturated stocks like Velvia have stronger off-diagonal mixing (more inter-layer coupling) compared to flatter stocks.
PROVIA / Standard
3×3A balanced crosstalk profile with slight primary separation.
Velvia / Vivid
3×3High off-diagonal values resulting in vivid cross-layer coupling.
CLASSIC CHROME
3×3Strong blue suppression and nuanced cyan blending.
CLASSIC Neg.
3×3Aggressive matrix yielding cyan-tinted shadows and distinct greens.
ETERNA / Cinema
3×3Subtle cross-contamination for soft, painterly cinematic tones.
ETERNA BLEACH BYPASS
3×3Heavily compromised layer separation, simulating skipped silver removal.
3D LUT Film Stocks
For specialized cinematic profiles that fall outside parametric limits, HeliosCam supports full 3D LUT (Look-Up Table) processing using tetrahedral 33×33×33 cube interpolation.
Bundled Legacy & Motion Picture Stocks
Custom LUT Import: HeliosCam fully supports loading standard .cube format files (from 17³ up to 65³ dimensions) directly into the app for user-created looks.
35mm Film Grain Model
Digital sensor noise is generally Gaussian, uniform, and scales at the pixel level. True film grain is formed by irregular clumps of microscopic silver halide crystals suspended in gelatin. HeliosCam implements a physically based grain synthesis pipeline that differs from digital noise in three crucial ways.
- Scale and Size: Clumps span several pixels and scale naturally with image resolution, rather than clinging to a single pixel width. We model this as roughly 1000 clumps per image height.
- Midtone-Peaked Response: Because grain represents density, pure blacks (no exposure) and pure whites (maximum density) possess practically no visible grain structure. Grain visibility mathematically peaks in the midtones.
- Non-Clipping Blend: Adding or multiplying noise into bright/dark areas causes hard clipping. We use a Pegtop soft-light blend that organically wraps the texture around the underlying color.
Grain Luminance Envelope
Calculates the intensity of grain depending on the underlying luminance and the peak midtone anchor .
Pegtop Soft-Light Blend
Combines the scaled noise () with the base image () without causing harsh clipping at 0 or 255.
| Engine Parameter | Value | Description |
|---|---|---|
| GRAIN_MAX | 0.85 | Maximum intensity scalar of the grain pattern. |
| GRAIN_FINE | 0.30 | Fraction of high-frequency sharp texture mixed into the softer clumps. |
| GRAIN_CLUMPS_PER_HEIGHT | 1000 | Scale invariant defining how physical clumping appears irrespective of sensor output size. |
Cinematic Halation Model
In physical film cameras, when extremely bright light hits the emulsion, some photons penetrate completely through all dye layers, bounce off the backing layer of the film strip, and re-expose the film from the bottom up. Because the bottom layer is the red-sensitive emulsion, this back-scattered light produces a distinctive, glowing red/orange halo around harsh highlights.
HeliosCam explicitly separates this phenomena into two distinct optical scatter effects that run in parallel. Both are driven by independent user controls for Bloom (veiling glare strength) and Halation (red rim toggle/strength).
| Attribute | Bloom (Veiling Glare) | Halation (Red Rim) |
|---|---|---|
| Tint | Neutral white | [1.0, 0.45, 0.20] (Red-Orange) |
| Luma Threshold | 0.62 | 0.72 |
| Spread / Radius | Wide (radiusDiv = 11) | Tight (radiusDiv = 25) |
| Blend Mode | SCREEN | ADDITIVE |
| Visual Effect | Lifts/bleaches shadows near lights, creates a dreamlike glowing atmosphere. | Produces a tight, concentrated red rim directly on the edge of clipping highlights. |
Screen Blend Equation (Bloom)
The screen mode lifts shadows towards white without pushing existing bright areas past the clipping point.