A film stock ran at order 25, after white balance and exposure, and everything after it — contrast, the curves, the colour mixer, the grading, every mask layer's tone — acted on the film's display-referred output, as though the frame had been scanned and then worked on. That was a display-referred rendering in the middle of the chain, which D19 removes (FR-DEV-3f, FR-DEV-3j). `film_sim` is now in `Stage::View` beside `view_transform`. While a stock is loaded the composer emits it in the view transform's place and not the sigmoid; otherwise the sigmoid. So every edit is a decision about the exposure the negative receives, and the film is the last thing that happens to the picture — after the detail stage too, in the view pass, which already binds the film's tables, the mask array and the grain's source position. Its per-layer settings blend there as they did in the fused pass. `op_renders` goes: a rendering is chosen, not suppressed, and the only render with no view transform is the camera-space tap. The YAML order moves to 190 so the panel reads in pipeline order; the stage, not the number, is what places it. Existing edits that combine a stock with tone or colour operations now render differently: those operations used to act on the print, and now act on the scene.
28 lines
1.4 KiB
YAML
28 lines
1.4 KiB
YAML
id: film_sim
|
|
order: 190
|
|
# What this node is *about* is not written here, and cannot be: a `rust:` node
|
|
# publishes its own descriptor, so `attributes:` in this file would be read,
|
|
# validated and then ignored. See `Attribute::Effect` on `FilmSim`'s descriptor
|
|
# in `../src/ops/film_sim.rs`.
|
|
rust: FilmSim
|
|
|
|
why_rust: |
|
|
It carries a stock's measured tables — an exposure matrix, three
|
|
characteristic curves and a density lookup — which are not parameters and
|
|
which no `uniforms:` expression could produce. Its neutral is "no stock
|
|
loaded" rather than a set of values, and it is the one node that declares
|
|
`Operation::renders`, so the composer omits the camera profile's base curve
|
|
and the conversion out of camera space on its behalf.
|
|
|
|
placement: |
|
|
Last, in the view transform's place (D19, FR-DEV-3j), after every other
|
|
operation and after the detail stage.
|
|
|
|
Before D19 it sat at order 25, after white balance and exposure, and every
|
|
decision below it acted on the film's output, as though the frame had been
|
|
scanned and then worked on. That put a display-referred rendering in the
|
|
middle of the chain, which is what D19 removes: every operation is now handed
|
|
the scene, and the film is the last thing that happens to the picture — an
|
|
edit is a decision about the exposure the negative receives. `Stage::View`
|
|
is what puts it there; this number only places it in the panel's order.
|