From 0f8c8b02dce180fbd529fc0ede098c0680d92de1 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 12 Apr 2020 14:51:29 +0200 Subject: [PATCH] Document the new white balance system in 1.9.2. --- theme.rst | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/theme.rst b/theme.rst index dbfdebe..8b3fce3 100644 --- a/theme.rst +++ b/theme.rst @@ -303,14 +303,36 @@ The theme should return a CSS color (e.g. “#ff0000”, or “cyan”) for each channel when asked; it can vary from frame to frame. A typical use is to mark the currently playing input as red, or the preview as green. -And finally, there are two entry points related to white balance:: + +.. _white-balance: + +White balance +............. + +Finally, there are two entry points related to white balance. The first one +is:: Nageru.set_supports_wb(2, true) - function set_wb(channel, red, green, blue) If the first function is called with a true value (at the start of the theme), the channel will get a “Set WB” button next to it, which will activate a color -picker. When the user picks a color (ostensibly with a gray point), the second +picker, to select the gray point. To actually *apply* this white balance change, +you have two options. If you're using Nageru 1.9.2 or newer, it's as simple +as adding one element to the scene:: + + scene:add_white_balance() + +The white balance effect will automatically figure out which input it is +connected to, and fetch its gray point if needed. (If it is connected to +e.g. a mix of several inputs, such as a camera and an overlay, you will need to +give the input to fetch white balance from as as a parameter.) + +If, on the other hand, you are using Nageru 1.9.1 or older (or just wish +for more manual control), there's an entry point you will need to implement:: + + function set_wb(channel, red, green, blue) + +When the user picks a gray point, this function function will be called (with the RGB values in linear light—not sRGB!), and the theme can then use it to adjust the white balance for that channel. The typical way to to this is to have a *WhiteBalanceEffect* on each input -- 2.39.2