Skip to content

Commit c1af738

Browse files
committed
cRaySchism: Added OKLab saturation
1 parent a05c9cb commit c1af738

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

shaders/cRaySchism.fx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ void ApplyColorGrading(inout float3 Color)
384384
// Convert user-friendly uniform settings
385385
float PostExposure = exp2(_GradePostExposure);
386386
float Contrast = (_GradeContrast / 100.0) + 1.0;
387-
float HueShift = _GradeHueShift / 360.0;
387+
float HueShift = (_GradeHueShift / 360.0) * CMath_GetPi();
388388
float Saturation = (_GradeSaturation / 100.0) + 1.0;
389389

390390
// Apply post exposure
@@ -395,14 +395,18 @@ void ApplyColorGrading(inout float3 Color)
395395
Color = (Color - ACEScc_MIDGRAY) * Contrast + ACEScc_MIDGRAY;
396396
Color = CCamera_DecodeLogC(Color);
397397

398-
// Apply hue shifting
399-
Color = CColor_GetHSVfromRGB(Color);
400-
Color.x += HueShift;
401-
Color = CColor_GetRGBfromHSV(Color);
402-
403398
// Apply color filter
404399
Color *= _GradeColorFilter;
405400

401+
// Apply hue shifting
402+
Color = CColor_GetOKLCHfromRGB(Color);
403+
Color.z += HueShift;
404+
Color = CColor_GetRGBfromOKLCH(Color);
405+
406+
// Apply saturation
407+
float Luminance = CColor_GetLuma(Color, 3);
408+
Color = lerp(Luminance, Color, Saturation);
409+
406410
Color = max(Color, 0.0);
407411
}
408412

0 commit comments

Comments
 (0)