]> git.sesse.net Git - nageru/blobdiff - nageru/theme.lua
Support auto white balance (ie., not controlled by the theme).
[nageru] / nageru / theme.lua
index 349d33b865fa7ebbfae90179ab8d05235cd363e9..195e89b88ab11e5bbcfc9eb7e187dc4514e690de 100644 (file)
@@ -16,11 +16,6 @@ local state = {
        transition_src_signal = 0,
        transition_dst_signal = 0,
 
-       neutral_colors = {
-               {0.5, 0.5, 0.5},  -- Input 0.
-               {0.5, 0.5, 0.5}   -- Input 1.
-       },
-
        live_signal_num = 0,
        preview_signal_num = 1
 }
@@ -38,9 +33,9 @@ local FADE_TRANSITION = 2
 
 function make_sbs_input(scene)
        return {
-               input = scene:add_input(),
+               input = scene:add_input(0),  -- Live inputs only.
                resample_effect = scene:add_effect({ResampleEffect.new(), ResizeEffect.new()}),
-               wb_effect = scene:add_effect(WhiteBalanceEffect.new()),
+               wb_effect = scene:add_auto_white_balance(),
                padding_effect = scene:add_effect(IntegralPaddingEffect.new())
        }
 end
@@ -72,7 +67,7 @@ function make_fade_input(scene)
        return {
                input = scene:add_input(),
                resample_effect = scene:add_optional_effect(ResampleEffect.new()),  -- Activated if scaling.
-               wb_effect = scene:add_optional_effect(WhiteBalanceEffect.new())  -- Activated for video inputs.
+               wb_effect = scene:add_auto_white_balance()  -- Activated for video inputs.
        }
 end
 
@@ -100,7 +95,7 @@ local simple_scene = {
        scene = scene,
        input = scene:add_input(),
        resample_effect = scene:add_effect({ResampleEffect.new(), ResizeEffect.new(), IdentityEffect.new()}),
-       wb_effect = scene:add_effect(WhiteBalanceEffect.new())
+       wb_effect = scene:add_auto_white_balance()
 }
 scene:finalize()
 
@@ -168,15 +163,6 @@ function channel_involved_in(channel, signal_num)
        return false
 end
 
--- API ENTRY POINT
--- Gets called with a new gray point when the white balance is changing.
--- The color is in linear light (not sRGB gamma).
-function set_wb(channel, red, green, blue)
-       if is_plain_signal(channel - 2) then
-               state.neutral_colors[channel - 2 + 1] = { red, green, blue }
-       end
-end
-
 function finish_transitions(t)
        if state.transition_type ~= NO_TRANSITION and t >= state.transition_end then
                state.live_signal_num = state.transition_dst_signal
@@ -296,7 +282,6 @@ function setup_fade_input(state, input, signals, signal_num, width, height)
        else
                input.input:display(signal_num)
                input.wb_effect:enable()
-               set_neutral_color(input.wb_effect, state.neutral_colors[signal_num - INPUT0_SIGNAL_NUM + 1])
 
                if (signals:get_width(signal_num) ~= width or signals:get_height(signal_num) ~= height) then
                        input.resample_effect:enable()
@@ -330,7 +315,6 @@ function setup_simple_input(state, signals, signal_num, width, height, hq)
        else
                simple_scene.resample_effect:disable()  -- No scaling.
        end
-       set_neutral_color_from_signal(state, simple_scene.wb_effect, signal_num)
 end
 
 -- API ENTRY POINT
@@ -535,9 +519,6 @@ function pos_from_top_left(x, y, width, height, screen_width, screen_height)
 end
 
 function prepare_sbs_scene(state, t, transition_type, src_signal, dst_signal, screen_width, screen_height, input_resolution, hq)
-       set_neutral_color(sbs_scene.input0.wb_effect, state.neutral_colors[1])
-       set_neutral_color(sbs_scene.input1.wb_effect, state.neutral_colors[2])
-
        -- First input is positioned (16,48) from top-left.
        -- Second input is positioned (16,48) from the bottom-right.
        local pos0 = pos_from_top_left(16, 48, 848, 477, screen_width, screen_height)
@@ -594,16 +575,6 @@ function place_rectangle_with_affine(input, pos, aff, screen_width, screen_heigh
        place_rectangle(input, x0, y0, x1, y1, screen_width, screen_height, input_width, input_height, hq)
 end
 
-function set_neutral_color(effect, color)
-       effect:set_vec3("neutral_color", color[1], color[2], color[3])
-end
-
-function set_neutral_color_from_signal(state, effect, signal)
-       if is_plain_signal(signal) then
-               set_neutral_color(effect, state.neutral_colors[signal - INPUT0_SIGNAL_NUM + 1])
-       end
-end
-
 function calc_zoom_progress(state, t)
        if t < state.transition_start then
                return 0.0