Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package art-ctlscripts for openSUSE:Factory checked in at 2024-10-21 16:25:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/art-ctlscripts (Old) and /work/SRC/openSUSE:Factory/.art-ctlscripts.new.26871 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "art-ctlscripts" Mon Oct 21 16:25:58 2024 rev:2 rq:1216507 version:1.1 Changes: -------- --- /work/SRC/openSUSE:Factory/art-ctlscripts/art-ctlscripts.changes 2024-05-29 19:35:52.580541734 +0200 +++ /work/SRC/openSUSE:Factory/.art-ctlscripts.new.26871/art-ctlscripts.changes 2024-10-21 16:26:06.900735134 +0200 @@ -1,0 +2,10 @@ +Mon Oct 21 06:47:04 UTC 2024 - [email protected] + +- Update to version 1.1: + * artlib: added helper function luteval + * added graphical equalizer by saturation + * improved tone curve + * added graphic luminance equalizer + * added tone curve and graphical hue equalizer + +------------------------------------------------------------------- Old: ---- art-ctlscripts-1.0.1.tar.xz New: ---- art-ctlscripts-1.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ art-ctlscripts.spec ++++++ --- /var/tmp/diff_new_pack.xEKOBr/_old 2024-10-21 16:26:07.540761983 +0200 +++ /var/tmp/diff_new_pack.xEKOBr/_new 2024-10-21 16:26:07.544762151 +0200 @@ -17,7 +17,7 @@ Name: art-ctlscripts -Version: 1.0.1 +Version: 1.1 Release: 0 Summary: Custom CTL scripts for the ART raw processor. License: GPL-3.0-only ++++++ _service ++++++ --- /var/tmp/diff_new_pack.xEKOBr/_old 2024-10-21 16:26:07.576763494 +0200 +++ /var/tmp/diff_new_pack.xEKOBr/_new 2024-10-21 16:26:07.580763662 +0200 @@ -2,8 +2,8 @@ <service name="tar_scm" mode="disabled"> <param name="url">https://bitbucket.org/agriggio/art-ctlscripts.git/</param> <param name="exclude">.git</param> - <param name="versionformat">1.0.1</param> - <param name="revision">1.0.1</param> + <param name="versionformat">1.1</param> + <param name="revision">1.1</param> <param name="changesgenerate">enable</param> <param name="scm">git</param> <param name="filename">art-ctlscripts</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.xEKOBr/_old 2024-10-21 16:26:07.600764501 +0200 +++ /var/tmp/diff_new_pack.xEKOBr/_new 2024-10-21 16:26:07.604764668 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://bitbucket.org/agriggio/art-ctlscripts.git/</param> - <param name="changesrevision">d2639c555e37d87958f2cc615fb5610ea4436637</param></service></servicedata> + <param name="changesrevision">300187dd8aa7041f247bf0e7b6e37b718f0f3685</param></service></servicedata> (No newline at EOF) ++++++ art-ctlscripts-1.0.1.tar.xz -> art-ctlscripts-1.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/art-ctlscripts-1.0.1/_artlib.ctl new/art-ctlscripts-1.1/_artlib.ctl --- old/art-ctlscripts-1.0.1/_artlib.ctl 2024-05-28 14:42:37.000000000 +0200 +++ new/art-ctlscripts-1.1/_artlib.ctl 2024-08-06 08:46:54.000000000 +0200 @@ -297,3 +297,41 @@ return rgb; } + + +const float pq_m1 = 2610.0 / 16384.0; +const float pq_m2 = 2523.0 / 32.0; +const float pq_c1 = 107.0 / 128.0; +const float pq_c2 = 2413.0 / 128.0; +const float pq_c3 = 2392.0 / 128.0; + +float pq_curve(float x, bool inv) +{ + if (!inv) { + float y = fmax(x / 100.0, 0.0); + float a = pow(y, pq_m1); + return pow((pq_c1 + pq_c2 * a) / (1.0 + pq_c3 * a), pq_m2); + } else { + float p = pow(x, 1.0/pq_m2); + float v = fmax(p - pq_c1, 0.0) / (pq_c2 - pq_c3 * p); + return pow(v, 1.0 / pq_m1) * 100.0; + } +} + + +float lin2log(float x, float base) +{ + return log(x * (base - 1) + 1) / log(base); +} + + +float log2lin(float x, float base) +{ + return (pow(base, x) - 1) / (base - 1); +} + + +float luteval(float lut[], float x, float vmin=0, float vmax=1) +{ + return lookupCubic1D(lut, vmin, vmax, x); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/art-ctlscripts-1.0.1/hueeqg.ctl new/art-ctlscripts-1.1/hueeqg.ctl --- old/art-ctlscripts-1.0.1/hueeqg.ctl 1970-01-01 01:00:00.000000000 +0100 +++ new/art-ctlscripts-1.1/hueeqg.ctl 2024-08-06 08:46:54.000000000 +0200 @@ -0,0 +1,51 @@ +// @ART-label: "Graphical equalizer by hue" +// @ART-colorspace: "rec2020" + +import "_artlib"; + +float hue01(float h) +{ + float v = h / (2 * M_PI); + if (v < 0.0) { + return 1.0 + v; + } else if (v > 1.0) { + return v - 1.0; + } else { + return v; + } +} + + +float tolin(float y, float base) +{ + float v = (y - 0.5) * 2.0; + return sgn(v) * clamp(log2lin(fabs(v), base), 0, 1); +} + +// @ART-param: ["hcurve", "H", 2, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 0.16666666666666666, 0.5, 0.35, 0.35, 0.3333333333333333, 0.5, 0.35, 0.35, 0.5, 0.5, 0.35, 0.35, 0.6666666666666666, 0.5, 0.35, 0.35, 0.8333333333333333, 0.5, 0.35, 0.35], [[0.0, 0.6, 0.3, 0.48947368421052634], [0.16666666666666666, 0.6, 0.4105263157894737, 0.3], [0.3333333333333333, 0.48947368421052634, 0.6, 0.3], [0.5, 0.3, 0.6, 0.41052631578947363], [0.6666666666666666, 0.3, 0.48947368421052634, 0.6], [0.8333333333333333, 0.41052631578947363, 0.3, 0.6], [1.0, 0.6, 0.3, 0.48947368421052634]], 0, "Channel"] +// @ART-param: ["scurve", "S", 2, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 0.16666666666666666, 0.5, 0.35, 0.35, 0.3333333333333333, 0.5, 0.35, 0.35, 0.5, 0.5, 0.35, 0.35, 0.6666666666666666, 0.5, 0.35, 0.35, 0.8333333333333333, 0.5, 0.35, 0.35], [[0.0, 0.6, 0.3, 0.48947368421052634], [0.16666666666666666, 0.6, 0.4105263157894737, 0.3], [0.3333333333333333, 0.48947368421052634, 0.6, 0.3], [0.5, 0.3, 0.6, 0.41052631578947363], [0.6666666666666666, 0.3, 0.48947368421052634, 0.6], [0.8333333333333333, 0.41052631578947363, 0.3, 0.6], [1.0, 0.6, 0.3, 0.48947368421052634]], 0, "Channel"] +// @ART-param: ["lcurve", "L", 2, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 0.16666666666666666, 0.5, 0.35, 0.35, 0.3333333333333333, 0.5, 0.35, 0.35, 0.5, 0.5, 0.35, 0.35, 0.6666666666666666, 0.5, 0.35, 0.35, 0.8333333333333333, 0.5, 0.35, 0.35], [[0.0, 0.6, 0.3, 0.48947368421052634], [0.16666666666666666, 0.6, 0.4105263157894737, 0.3], [0.3333333333333333, 0.48947368421052634, 0.6, 0.3], [0.5, 0.3, 0.6, 0.41052631578947363], [0.6666666666666666, 0.3, 0.48947368421052634, 0.6], [0.8333333333333333, 0.41052631578947363, 0.3, 0.6], [1.0, 0.6, 0.3, 0.48947368421052634]], 0, "Channel"] +void ART_main(varying float r, varying float g, varying float b, + output varying float rout, + output varying float gout, + output varying float bout, + float hcurve[256], float scurve[256], float lcurve[256]) +{ + float hsl[3] = rgb2hsl(r, g, b); + float h = hue01(hsl[0]); + float v = luteval(hcurve, h); + float f = tolin(v, 50) * M_PI; + hsl[0] = hsl[0] + f; + v = luteval(scurve, h); + f = tolin(v, 2); + float s = fmax(1.0 + f, 0); + hsl[1] = hsl[1] * s; + v = luteval(lcurve, h); + s = fmin(hsl[1], 1); + f = tolin(v, 10); + hsl[2] = hsl[2] * pow(2, 10 * f * s); + float rgb[3] = hsl2rgb(hsl); + rout = rgb[0]; + gout = rgb[1]; + bout = rgb[2]; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/art-ctlscripts-1.0.1/lumeqg.ctl new/art-ctlscripts-1.1/lumeqg.ctl --- old/art-ctlscripts-1.0.1/lumeqg.ctl 1970-01-01 01:00:00.000000000 +0100 +++ new/art-ctlscripts-1.1/lumeqg.ctl 2024-08-06 08:46:54.000000000 +0200 @@ -0,0 +1,37 @@ +// @ART-label: "Graphical equalizer by luminance" +// @ART-colorspace: "rec2020" + +import "_artlib"; + +float tolin(float y, float base) +{ + float v = (y - 0.5) * 2.0; + return sgn(v) * clamp(log2lin(fabs(v), base), 0, 1); +} + +// @ART-param: ["hcurve", "H", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 0.5, 0.35, 0.35], [[0.0, 0.0, 0.0, 0.0], [0.16666666666666666, 0.01941186441032164, 0.01941186441032164, 0.01941186441032164], [0.3333333333333333, 0.08919350686224782, 0.08919350686224782, 0.08919350686224782], [0.5, 0.217637640824031, 0.217637640824031, 0.217637640824031], [0.6666666666666666, 0.40982573843632336, 0.40982573843632336, 0.40982573843632336], [0.8333333333333334, 0.6695781277796022, 0.6695781277796022, 0.6695781277796022], [1.0, 1.0, 1.0, 1.0]], 0, "Channel"] +// @ART-param: ["scurve", "S", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 0.5, 0.35, 0.35], [[0.0, 0.0, 0.0, 0.0], [0.16666666666666666, 0.01941186441032164, 0.01941186441032164, 0.01941186441032164], [0.3333333333333333, 0.08919350686224782, 0.08919350686224782, 0.08919350686224782], [0.5, 0.217637640824031, 0.217637640824031, 0.217637640824031], [0.6666666666666666, 0.40982573843632336, 0.40982573843632336, 0.40982573843632336], [0.8333333333333334, 0.6695781277796022, 0.6695781277796022, 0.6695781277796022], [1.0, 1.0, 1.0, 1.0]], 0, "Channel"] +// @ART-param: ["lcurve", "L", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 0.5, 0.35, 0.35], [[0.0, 0.0, 0.0, 0.0], [0.16666666666666666, 0.01941186441032164, 0.01941186441032164, 0.01941186441032164], [0.3333333333333333, 0.08919350686224782, 0.08919350686224782, 0.08919350686224782], [0.5, 0.217637640824031, 0.217637640824031, 0.217637640824031], [0.6666666666666666, 0.40982573843632336, 0.40982573843632336, 0.40982573843632336], [0.8333333333333334, 0.6695781277796022, 0.6695781277796022, 0.6695781277796022], [1.0, 1.0, 1.0, 1.0]], 0, "Channel"] +void ART_main(varying float r, varying float g, varying float b, + output varying float rout, + output varying float gout, + output varying float bout, + float hcurve[256], float scurve[256], float lcurve[256]) +{ + float hsl[3] = rgb2hsl(r, g, b); + float y = pow(clamp(hsl[2], 0, 1), 1.0/2.2); + float v = luteval(hcurve, y); + float f = tolin(v, 50) * M_PI; + hsl[0] = hsl[0] + f; + v = luteval(scurve, y); + f = tolin(v, 2); + float s = fmax(1.0 + f, 0); + hsl[1] = hsl[1] * s; + v = luteval(lcurve, y) - 0.5; + f = 1 + sgn(v) * pow(v, 2) * 5; + hsl[2] = hsl[2] * f; + float rgb[3] = hsl2rgb(hsl); + rout = rgb[0]; + gout = rgb[1]; + bout = rgb[2]; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/art-ctlscripts-1.0.1/sateqg.ctl new/art-ctlscripts-1.1/sateqg.ctl --- old/art-ctlscripts-1.0.1/sateqg.ctl 1970-01-01 01:00:00.000000000 +0100 +++ new/art-ctlscripts-1.1/sateqg.ctl 2024-08-06 08:46:54.000000000 +0200 @@ -0,0 +1,37 @@ +// @ART-label: "Graphical equalizer by saturation" +// @ART-colorspace: "rec2020" + +import "_artlib"; + +float tolin(float y, float base) +{ + float v = (y - 0.5) * 2.0; + return sgn(v) * clamp(log2lin(fabs(v), base), 0, 1); +} + +// @ART-param: ["hcurve", "H", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 0.5, 0.35, 0.35], [[0.0, 0.6247426875000001, 0.6247426875000001, 0.6247426875000001], [0.16666666666666666, 0.6252545086395497, 0.6246428485887556, 0.6240446952267805], [0.3333333333333333, 0.6305332826764821, 0.6236131391613252, 0.6168458063862508], [0.5, 0.6486781933883669, 0.6200736836951146, 0.5921008193263192], [0.6666666666666666, 0.6902557933623452, 0.6119633068607208, 0.535399676527902], [0.8333333333333334, 0.767801045044281, 0.596836863457253, 0.42964791616394454], [1.0, 0.8955420238967149, 0.5719189394708761, 0.2554421061206866]], 0, "Channel"] +// @ART-param: ["scurve", "S", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 0.5, 0.35, 0.35], [[0.0, 0.6247426875000001, 0.6247426875000001, 0.6247426875000001], [0.16666666666666666, 0.6252545086395497, 0.6246428485887556, 0.6240446952267805], [0.3333333333333333, 0.6305332826764821, 0.6236131391613252, 0.6168458063862508], [0.5, 0.6486781933883669, 0.6200736836951146, 0.5921008193263192], [0.6666666666666666, 0.6902557933623452, 0.6119633068607208, 0.535399676527902], [0.8333333333333334, 0.767801045044281, 0.596836863457253, 0.42964791616394454], [1.0, 0.8955420238967149, 0.5719189394708761, 0.2554421061206866]], 0, "Channel"] +// @ART-param: ["lcurve", "L", 1, ["ControlPoints", 0.0, 0.5, 0.35, 0.35, 1, 0.5, 0.35, 0.35], [[0.0, 0.6247426875000001, 0.6247426875000001, 0.6247426875000001], [0.16666666666666666, 0.6252545086395497, 0.6246428485887556, 0.6240446952267805], [0.3333333333333333, 0.6305332826764821, 0.6236131391613252, 0.6168458063862508], [0.5, 0.6486781933883669, 0.6200736836951146, 0.5921008193263192], [0.6666666666666666, 0.6902557933623452, 0.6119633068607208, 0.535399676527902], [0.8333333333333334, 0.767801045044281, 0.596836863457253, 0.42964791616394454], [1.0, 0.8955420238967149, 0.5719189394708761, 0.2554421061206866]], 0, "Channel"] +void ART_main(varying float r, varying float g, varying float b, + output varying float rout, + output varying float gout, + output varying float bout, + float hcurve[256], float scurve[256], float lcurve[256]) +{ + float hsl[3] = rgb2hsl(r, g, b); + float y = pow(clamp(hsl[1], 0, 1), 1.0/3.5); + float v = luteval(hcurve, y); + float f = tolin(v, 50) * M_PI; + hsl[0] = hsl[0] + f; + v = luteval(scurve, y); + f = tolin(v, 2); + float s = fmax(1.0 + f, 0); + hsl[1] = hsl[1] * s; + v = luteval(lcurve, y) - 0.5; + f = 1 + sgn(v) * pow(v, 2) * 5; + hsl[2] = hsl[2] * f; + float rgb[3] = hsl2rgb(hsl); + rout = rgb[0]; + gout = rgb[1]; + bout = rgb[2]; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/art-ctlscripts-1.0.1/tonecurve.ctl new/art-ctlscripts-1.1/tonecurve.ctl --- old/art-ctlscripts-1.0.1/tonecurve.ctl 1970-01-01 01:00:00.000000000 +0100 +++ new/art-ctlscripts-1.1/tonecurve.ctl 2024-08-06 08:46:54.000000000 +0200 @@ -0,0 +1,75 @@ +// @ART-label: "Tone curve" +// @ART-colorspace: "rec2020" + +import "_artlib"; + +const float c = 0; +const float a = 1; +const float m = 0.5;//0.18; +const float b = (a / (m - c)) * (1.0 - ((m - c) / a)) * m; +const float s = 1; +const float g = s * pow(m + b, 2) / (a * b); + +float ro(float x) +{ + return a * (x / (x + b)) + c; +} + +float iro(float y) +{ + return (-b * ((y - c) / a)) / (((y - c) / a) - 1); +} + +float contr(float x) +{ + return m * pow(x / m, g); +} + +float icontr(float y) +{ + return pow(y / m, 1.0/g) * m; +} + +float gam(float x) +{ + return pow(x, 1.0/2.2); +} + + +float igam(float x) +{ + return pow(x, 2.2); +} + + +float enc(float x) +{ + float y = ite(x <= m, x, ro(contr(x))); + return gam(y); +} + + +float dec(float x) +{ + float y = igam(x); + return ite(y <= m, y, icontr(iro(y))); +} + + +// @ART-param: ["curve", "Curve", 0, ["CatmullRom", 0, 0, 1, 1]] +void ART_main(varying float r, varying float g, varying float b, + output varying float rout, + output varying float gout, + output varying float bout, + float curve[256]) +{ + float rgb[3] = { r, g, b }; + for (int i = 0; i < 3; i = i+1) { + float x = enc(rgb[i]); + float y = luteval(curve, x); + rgb[i] = dec(y); + } + rout = rgb[0]; + gout = rgb[1]; + bout = rgb[2]; +}
