schema_version: 0.1
type: filter
identifier: movit.lift_gamma_gain
title: Lift, Gamma, and Gain (GLSL)
version: 1
copyright: Dan Dennedy
creator: Steinar H. Gunderson
license: GPLv2
language: en
tags:
  - Video
description: >
  A simple lift/gamma/gain effect, used for color grading.
notes: >
  Very roughly speaking, lift=shadows, gamma=midtones and gain=highlights,
  although all parameters affect the entire curve. Mathematically speaking,
  it is a bit unusual to look at gamma as a color, but it works pretty well
  in practice.
  The classic formula is: output = (gain * (x + lift * (1-x)))^(1/gamma).
  The lift is actually a case where we actually would _not_ want linear light;
  since black by definition becomes equal to the lift color, we want lift to
  be pretty close to black, but in linear light that means lift affects the
  rest of the curve relatively little. Thus, we actually convert to gamma 2.2
  before lift, and then back again afterwards. (Gain and gamma are,
  up to constants, commutative with the de-gamma operation.)

parameters:
  - identifier: lift_r
    title: Lift Red
    type: float
    minimum: 0.0
    default: 0.0
    mutable: yes

  - identifier: lift_g
    title: Lift Green
    type: float
    minimum: 0.0
    default: 0.0
    mutable: yes

  - identifier: lift_b
    title: Lift Blue
    type: float
    minimum: 0.0
    default: 0.0
    mutable: yes

  - identifier: gamma_r
    title: Gamma Red
    type: float
    minimum: 0.0
    default: 1.0
    mutable: yes

  - identifier: gamma_g
    title: Gamma Green
    type: float
    minimum: 0.0
    default: 1.0
    mutable: yes

  - identifier: gamma_b
    title: Gamma Blue
    type: float
    minimum: 0.0
    default: 1.0
    mutable: yes

  - identifier: gain_r
    title: Gain Red
    type: float
    minimum: 0.0
    default: 1.0
    mutable: yes

  - identifier: gain_g
    title: Gain Green
    type: float
    minimum: 0.0
    default: 1.0
    mutable: yes

  - identifier: gain_b
    title: Gain Blue
    type: float
    minimum: 0.0
    default: 1.0
    mutable: yes
