/*
[configuration]

[OptionRangeFloat]
GUIName = Brightness Scale
OptionName = BRIGHTNESS_SCALE
MinValue = 0.1
MaxValue = 5.0
StepAmount = 0.1
DefaultValue = 1.0

[/configuration]
*/

void main()
{
  float4 color = Sample();
  float brightness_scale = GetOption(BRIGHTNESS_SCALE);

  // rgb->yuv
  float3 yuv;
  yuv.r = dot(color.rgb, float3(0.299f, 0.587f, 0.114f));
  yuv.g = dot(color.rgb, float3(-0.14713f, -0.28886f, 0.436f));
  yuv.b = dot(color.rgb, float3(0.615f, -0.51499f, -0.10001f));

  // apply brightness to y
  yuv.r = saturate(yuv.r * brightness_scale);

  // yuv->rgb
  color.r = dot(yuv, float3(1.0f, 0.0f, 1.13983f));
  color.g = dot(yuv, float3(1.0f, -0.39465f, -0.58060f));
  color.b = dot(yuv, float3(1.0f, 2.03211f, 0.0f));
  color.rgb = saturate(color.rgb);

  SetOutput(saturate(color));
}