Scale one linear emitter and invert its physical response, using the identical final stage as processPixel[Wide]Q16.
380 {
381 i32 scaled[1] = {light};
383 if (!pipeline.
response)
return scaled[0];
384 if (emitter == 0)
return inverseResponseQ16(scaled[0], pipeline.
response->red);
385 if (emitter == 1)
return inverseResponseQ16(scaled[0], pipeline.
response->green);
386 if (emitter == 2)
return inverseResponseQ16(scaled[0], pipeline.
response->blue);
387 if (!pipeline.
wide)
return 0;
388 if (emitter == 3)
return inverseResponseQ16(scaled[0], pipeline.
wide->white1_response);
389 if (emitter == 4)
return inverseResponseQ16(scaled[0], pipeline.
wide->white2_response);
390 return 0;
391}
void applyFluxScalar(FluxScalar scalar, span< i32 > drives) FL_NO_EXCEPT
Scale every drive by one scalar, in place.
shared_ptr< const ResponseLutsQ16 > response
Absent means linear code-to-light response.
shared_ptr< const WidePipelineQ16 > wide