21 lines
655 B
Plaintext
21 lines
655 B
Plaintext
float3 applyLiftGammaGainOffset(float3 color)
|
|
{
|
|
float3 liftAdjust = (lift.rgb - 0.5) * 0.5;
|
|
float3 offsetAdjust = (offset.rgb - 0.5) * 0.5;
|
|
float3 gammaAdjust = exp2((gamma.rgb - 0.5) * 2.0);
|
|
float3 gainAdjust = exp2((gain.rgb - 0.5) * 2.0);
|
|
|
|
float3 lifted = color + liftAdjust;
|
|
float3 gained = lifted * gainAdjust;
|
|
float3 corrected = pow(saturate(gained), 1.0 / max(gammaAdjust, float3(0.001)));
|
|
return corrected + offsetAdjust;
|
|
}
|
|
|
|
float4 shadeVideo(ShaderContext context)
|
|
{
|
|
float4 source = context.sourceColor;
|
|
float3 graded = applyLiftGammaGainOffset(source.rgb);
|
|
source.rgb = lerp(source.rgb, graded, strength);
|
|
return saturate(source);
|
|
}
|