id: film_sim order: 25 # Effect, not tone-and-colour. It declared both, which put "Kodachrome" in # the Light group beside exposure and again in Colour beside white balance — # two places, neither of which is where anyone looks for it, and both of which # it crowded. A stock is `Effect`'s own definition: applied rather than # corrected, a look and not a fix. That it moves tone and colour is true of # every look and is not what the attribute is for. attributes: [effect] 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: | After white balance and exposure, and before everything else. Those two are what the camera did — interpreting the sensor, and correcting the amount of light that reached it — and they are only meaningful on scene-linear values, which is what a film has to be handed. Everything below is a decision about the picture, and a decision about the picture belongs after the film has rendered it, exactly as it does when you scan a frame and then work on the scan.