@@ -23,7 +23,7 @@ SOFTWARE.
2323https://mit-license.org/
2424]]
2525@四隅丸め
26- --information:四隅丸め@Basic_S v1.20 (for beta20 ) by σ軸
26+ --information:四隅丸め@Basic_S v1.30 (for beta21 ) by σ軸
2727--label:Basic_S\クリッピング
2828--track@radius:半径,0,2000,40,0.01
2929--check@uniform:半径均一,true
@@ -279,7 +279,7 @@ obj.pixelshader("carve", "object", nil, {
279279}, "mask");
280280
281281@背景角丸矩形
282- --information:背景角丸矩形@Basic_S v1.20 (for beta20 ) by σ軸
282+ --information:背景角丸矩形@Basic_S v1.30 (for beta21 ) by σ軸
283283--label:Basic_S\装飾
284284--track@pad_X:余白X,-1000,1000,10,1
285285--track@pad_Y:余白Y,-1000,1000,10,1
580580obj.cx, obj.cy = obj.cx + (L - R) / 2, obj.cy + (T - B) / 2;
581581
582582@背景楕円
583- --information:背景楕円@Basic_S v1.20 (for beta20 ) by σ軸
583+ --information:背景楕円@Basic_S v1.30 (for beta21 ) by σ軸
584584--label:Basic_S\装飾
585585--track@pad_X:余白X,-1000,1000,10,1
586586--track@pad_Y:余白Y,-1000,1000,10,1
@@ -691,7 +691,7 @@ obj.effect("背景角丸矩形@Basic_S", "クリッピング", clip,
691691 pad_L, pad_R, pad_T, pad_B, line_x, line_y, back_x, back_y));
692692
693693@背景菱形
694- --information:背景菱形@Basic_S v1.20 (for beta20 ) by σ軸
694+ --information:背景菱形@Basic_S v1.30 (for beta21 ) by σ軸
695695--label:Basic_S\装飾
696696--track@pad_X:余白X,-1000,1000,10,1
697697--track@pad_Y:余白Y,-1000,1000,10,1
@@ -805,7 +805,7 @@ obj.effect("背景角丸矩形@Basic_S", "クリッピング", clip,
805805 pad_L, pad_R, pad_T, pad_B, line_x, line_y, back_x, back_y));
806806
807807@透明度適用
808- --information:透明度適用@Basic_S v1.20 (for beta20 ) by σ軸
808+ --information:透明度適用@Basic_S v1.30 (for beta21 ) by σ軸
809809--label:Basic_S\加工
810810--track@alpha:透明度,-100,100,0,0.01
811811--check@apply_former:累積分も適用,false
@@ -824,7 +824,7 @@ if apply_former then obj.alpha, alpha = 1, alpha * obj.alpha end
824824if alpha ~= 1 then obj.pixelshader("const_alpha", "object", nil, { alpha }, "mask") end
825825
826826@透明度二値化
827- --information:透明度二値化@Basic_S v1.20 (for beta20 ) by σ軸
827+ --information:透明度二値化@Basic_S v1.30 (for beta21 ) by σ軸
828828--label:Basic_S\加工
829829--track@alpha:基準透明度,0,100,50,0.01
830830--track@buffer:ぼかし幅,0,100,8,0.01
@@ -864,7 +864,7 @@ if alpha > 0 or buffer < 1 then
864864end
865865
866866@色調補正
867- --information:色調補正@Basic_S v1.20 (for beta20 ) by σ軸
867+ --information:色調補正@Basic_S v1.30 (for beta21 ) by σ軸
868868--label:Basic_S\色調整
869869--track@add_light:明るさ,0,200,100,0.01
870870--track@contrast:コントラスト,0,200,100,0.01
873873--check@rev_light:輝度反転,false
874874--track@mul_sat:彩度,0,200,100,0.01
875875--check@saturate:飽和する,false
876- --select@space:色空間=4 ,XYZ(sRGB)=0,YUV(BT.601)=1 ,YUV(BT.709)=2 ,YUV(BT.2020)=3 ,HSV(円柱)=4 ,HSV(円錐)=5 ,HSL(円柱)=6 ,HSL(双円錐)=7
876+ --select@space:色空間=5 ,XYZ(sRGB)=0,OKLCH=1, YUV(BT.601)=2 ,YUV(BT.709)=3 ,YUV(BT.2020)=4 ,HSV(円柱)=5 ,HSV(円錐)=6 ,HSL(円柱)=7 ,HSL(双円錐)=8
877877--value@PI:PI,{}
878878--[[pixelshader@by_xyz:
879879Texture2D src : register(t0);
@@ -901,6 +901,43 @@ float4 by_xyz(float4 pos : SV_Position) : SV_Target
901901 return c;
902902}
903903]]
904+ --[[pixelshader@by_oklab:
905+ Texture2D src : register(t0);
906+ cbuffer constant0 : register(b0) {
907+ float3x3 mat;
908+ float add_light, sat;
909+ };
910+ static const float3x3 m1_rgb = {
911+ 0.41222146, 0.53633255, 0.051445995,
912+ 0.2119035, 0.6806995, 0.10739696,
913+ 0.08830246, 0.28171885, 0.6299787
914+ }, m1_rgb_i = {
915+ 4.0767417,-3.3077116,0.23096994,
916+ -1.268438,2.6097574,-0.34131938,
917+ -0.0041960864,-0.7034186,1.7076147
918+ };
919+ float3 to_lms_gamma(float3 c)
920+ {
921+ static const float4 K = { 0.055, 1 / 1.055, 1 / 12.92, 0.04045 };
922+ c = mul(m1_rgb, abs(c) <= K.w ? K.z * c : sign(c) * pow((abs(c) + K.x) * K.y, 2.4));
923+ return sign(c) * pow(abs(c), 1 / 3.0);
924+ }
925+ float3 from_lms_gamma(float3 c)
926+ {
927+ c = mul(m1_rgb_i, c * c * c);
928+ static const float4 K = { 0.055, 1.055, 12.92, 0.0031308 };
929+ return abs(c) <= K.w ? K.z * c : sign(c) * (K.y * pow(abs(c), 1 / 2.4) - K.x);
930+ }
931+ float4 by_oklab(float4 pos : SV_Position) : SV_Target
932+ {
933+ float4 c = src.Load(int3(pos.xy, 0));
934+ c.rgb = to_lms_gamma(c.a > 0 ? c.rgb / c.a : 0);
935+ c.rgb = mul(mat, c.rgb) + add_light;
936+ c.rgb = c.a * from_lms_gamma(c.rgb);
937+ if (sat > 0) c.rgb = clamp(c.rgb, 0, c.a);
938+ return c;
939+ }
940+ ]]
904941--[[pixelshader@by_yuv:
905942Texture2D src : register(t0);
906943cbuffer constant0 : register(b0) {
@@ -998,8 +1035,9 @@ mul_sat = tonumber(PI.mul_sat) or mul_sat;
9981035saturate = as_bool(PI.saturate, saturate);
9991036if type(PI.space) == "string" then
10001037 space = ({
1001- ["XYZ(sRGB)"] = 0, ["YUV(BT.601)"] = 1, ["YUV(BT.709)"] = 2, ["YUV(BT.2020)"] = 3,
1002- ["HSV(円柱)"] = 4, ["HSV(円錐)"] = 5, ["HSL(円柱)"] = 6, ["HSL(双円錐)"] = 7,
1038+ ["XYZ(sRGB)"] = 0, ["OKLCH"] = 1,
1039+ ["YUV(BT.601)"] = 2, ["YUV(BT.709)"] = 3, ["YUV(BT.2020)"] = 4,
1040+ ["HSV(円柱)"] = 5, ["HSV(円錐)"] = 6, ["HSL(円柱)"] = 7, ["HSL(双円錐)"] = 8,
10031041 })[PI.space] or space;
10041042end
10051043
@@ -1009,7 +1047,7 @@ contrast = math.max(contrast / 100, 0);
10091047angle = angle % 360;
10101048mul_light = math.max(mul_light / 100, 0);
10111049mul_sat = math.max(mul_sat / 100, 0);
1012- space = math.min(math.max(math.floor(0.5 + space), 0), 6 );
1050+ space = math.min(math.max(math.floor(0.5 + space), 0), 8 );
10131051
10141052-- further calculations.
10151053if rev_light then add_light, mul_light = add_light + 1, -mul_light end
@@ -1021,7 +1059,7 @@ add_light, mul_light, mul_sat =
10211059if add_light == 0 and angle == 0 and mul_light == 1 and mul_sat == 1
10221060 and not saturate then return end
10231061
1024- if space < 4 then
1062+ if space < 5 then
10251063 local mat_conv = space == 0 and {{
10261064 -- (scaled (YZX minus white) <- sRGB, sRGB <- scaled (YZX minus white))-pair.
10271065 -- minus white is to move the white point onto the line Z = X = 0.
@@ -1033,7 +1071,15 @@ if space < 4 then
10331071 1, -0.86948282117431, 2.0882435025828;
10341072 1, 0.072396115773113, -0.62437430170414;
10351073 1, 1.8431349831126, 0.035899334206509;
1036- }} or space == 1 and {{ -- BT.601.
1074+ }} or space == 1 and {{ -- OKLAB.
1075+ 0.2104542553, 0.7936177850, -0.0040720468;
1076+ 1.9779984951, -2.4285922050, 0.4505937099;
1077+ 0.0259040371, 0.7827717662, -0.8086757660;
1078+ }, {
1079+ 0.99999999845052,0.39633779217377,0.21580375806076;
1080+ 1.0000000088818,-0.10556134232366,-0.063854174771706;
1081+ 1.0000000546724,-0.089484182094966,-1.2914855378641;
1082+ }} or space == 2 and {{ -- BT.601.
10371083 -- (YUV <- RGB, RGB <- YUV)-pairs.
10381084 0.299, 0.587, 0.114;
10391085 -0.16873589164786, -0.33126410835214, 0.5;
@@ -1042,7 +1088,7 @@ if space < 4 then
10421088 1, 0, 1.402;
10431089 1, -0.34413628620102, -0.71413628620102;
10441090 1, 1.772, 0;
1045- }} or space == 2 and {{ -- BT.709.
1091+ }} or space == 3 and {{ -- BT.709.
10461092 0.2126, 0.7152, 0.0722;
10471093 -0.11457210605734, -0.38542789394266, 0.5;
10481094 0.5, -0.45415290830582, -0.045847091694183;
@@ -1085,25 +1131,29 @@ if space < 4 then
10851131 end
10861132
10871133 -- apply shader.
1088- obj.pixelshader(space == 0 and "by_xyz" or "by_yuv", "object", "object", {
1089- M[1], M[4], M[7], 0;
1090- M[2], M[5], M[8], 0;
1091- M[3], M[6], M[9];
1092- add_light;
1093- saturate and 1 or 0;
1094- });
1134+ obj.pixelshader(
1135+ space == 0 and "by_xyz" or
1136+ space == 1 and "by_oklab" or
1137+ "by_yuv",
1138+ "object", "object", {
1139+ M[1], M[4], M[7], 0;
1140+ M[2], M[5], M[8], 0;
1141+ M[3], M[6], M[9];
1142+ add_light;
1143+ saturate and 1 or 0;
1144+ });
10951145else
10961146 -- apply shader.
10971147 obj.pixelshader("by_hsvl", "object", "object", {
10981148 1, mul_sat, mul_light, 0;
10991149 angle / 360, 0, add_light;
1100- space - 4 ;
1150+ space - 5 ;
11011151 saturate and 1 or 0;
11021152 });
11031153end
11041154
11051155@回転中心
1106- --information:回転中心@Basic_S v1.20 (for beta20 ) by σ軸
1156+ --information:回転中心@Basic_S v1.30 (for beta21 ) by σ軸
11071157--label:Basic_S\配置
11081158--track@X:X,-4000,4000,0,0.01
11091159--track@Y:Y,-4000,4000,0,0.01
@@ -1113,7 +1163,7 @@ obj.cy = obj.cy + Y;
11131163obj.cz = obj.cz + Z;
11141164
11151165@回転中心アンカー指定
1116- --information:回転中心アンカー指定@Basic_S v1.20 (for beta20 ) by σ軸
1166+ --information:回転中心アンカー指定@Basic_S v1.30 (for beta21 ) by σ軸
11171167--label:Basic_S\配置
11181168--track0:X,-4000,4000,0,0.01
11191169--track1:Y,-4000,4000,0,0.01
@@ -1161,7 +1211,7 @@ obj.ox, obj.oy, obj.oz = obj.ox + dx, obj.oy + dy, obj.oz + dz;
11611211obj.cx,obj.cy,obj.cz = cx, cy, cz;
11621212
11631213@上下左右揃え
1164- --information:上下左右揃え@Basic_S v1.20 (for beta20 ) by σ軸
1214+ --information:上下左右揃え@Basic_S v1.30 (for beta21 ) by σ軸
11651215--label:Basic_S\配置
11661216--track@X:左右%,-100,100,0,0.001
11671217--track@Y:上下%,-100,100,0,0.001
@@ -1183,7 +1233,7 @@ if cx ~= obj.cx or cy ~= obj.cy then
11831233end
11841234
11851235@直角回転
1186- --information:直角回転@Basic_S v1.20 (for beta20 ) by σ軸
1236+ --information:直角回転@Basic_S v1.30 (for beta21 ) by σ軸
11871237--label:Basic_S\配置
11881238--select@rot:方向=0,なし=0,90°時計回り=1,180°反転=2,90°反時計回り=3,左右反転=4,上下反転=5,右上軸反転=6,左上軸反転=7
11891239--check@move_center:中心の位置を変更,false
@@ -1230,7 +1280,7 @@ obj.copybuffer("object", "tempbuffer");
12301280if not move_center then obj.cx, obj.cy = obj.cx + (cx - cx0), obj.cy + (cy - cy0) end
12311281
12321282@XYZ追加回転
1233- --information:XYZ追加回転@Basic_S v1.20 (for beta20 ) by σ軸
1283+ --information:XYZ追加回転@Basic_S v1.30 (for beta21 ) by σ軸
12341284--label:Basic_S\配置
12351285--track@X:X,-720,720,0,0.01
12361286--track@Y:Y,-720,720,0,0.01
@@ -1297,7 +1347,7 @@ if angle ~= 0 or draw then
12971347end
12981348
12991349@任意軸追加回転
1300- --information:任意軸追加回転@Basic_S v1.20 (for beta20 ) by σ軸
1350+ --information:任意軸追加回転@Basic_S v1.30 (for beta21 ) by σ軸
13011351--label:Basic_S\配置
13021352--track@angle:角度,-720,720,0,0.01
13031353--track0:回転軸X,-512,512,0,0.001
@@ -1543,7 +1593,7 @@ else
15431593end
15441594
15451595@傾斜
1546- --information:傾斜@Basic_S v1.20 (for beta20 ) by σ軸
1596+ --information:傾斜@Basic_S v1.30 (for beta21 ) by σ軸
15471597--label:Basic_S\変形
15481598--track@angle:角度,-80,80,0,0.001
15491599--track@slope:傾き%,-500,500,0,0.001
@@ -1621,7 +1671,7 @@ obj.copybuffer("object", "tempbuffer");
16211671obj.cx, obj.cy = obj.cx - cx, obj.cy - cy;
16221672
16231673@XY軸変形
1624- --information:XY軸変形@Basic_S v1.20 (for beta20 ) by σ軸
1674+ --information:XY軸変形@Basic_S v1.30 (for beta21 ) by σ軸
16251675--label:Basic_S\変形
16261676--value@axis_X:X軸,{100,0}
16271677--check@stretch_X:X長さ変更,false
@@ -1676,7 +1726,7 @@ obj.drawpoly(
16761726obj.copybuffer("object", "tempbuffer");
16771727
16781728@領域サイズ変更
1679- --information:領域サイズ変更@Basic_S v1.20 (for beta20 ) by σ軸
1729+ --information:領域サイズ変更@Basic_S v1.30 (for beta21 ) by σ軸
16801730--label:Basic_S\クリッピング
16811731--track@T:上,-4000,4000,0,1
16821732--track@B:下,-4000,4000,0,1
@@ -1763,7 +1813,7 @@ end
17631813obj.cx, obj.cy = cx, cy;
17641814
17651815@領域割合サイズ変更
1766- --information:領域割合サイズ変更@Basic_S v1.20 (for beta20 ) by σ軸
1816+ --information:領域割合サイズ変更@Basic_S v1.30 (for beta21 ) by σ軸
17671817--label:Basic_S\クリッピング
17681818--track@T:上%,-100,100,0,0.001
17691819--track@B:下%,-100,100,0,0.001
@@ -1817,7 +1867,7 @@ if L ~= 0 or R ~= 0 or T ~= 0 or B ~= 0 then
18171867end
18181868
18191869@領域サイズ指定
1820- --information:領域サイズ指定@Basic_S v1.20 (for beta20 ) by σ軸
1870+ --information:領域サイズ指定@Basic_S v1.30 (for beta21 ) by σ軸
18211871--label:Basic_S\クリッピング
18221872--track0:X,-4000,4000,0,0.1
18231873--track1:Y,-4000,4000,0,0.1
@@ -1911,7 +1961,7 @@ elseif L ~= 0 or R ~= 0 or T ~= 0 or B ~= 0 then
19111961end
19121962
19131963@カットずらし
1914- --information:カットずらし@Basic_S v1.20 (for beta20 ) by σ軸
1964+ --information:カットずらし@Basic_S v1.30 (for beta21 ) by σ軸
19151965--label:Basic_S\クリッピング
19161966--track0:ずれX,-4000,4000,40,1
19171967--track1:ずれY,-4000,4000,0,1
@@ -2120,7 +2170,7 @@ if not move_center then
21202170end
21212171
21222172@中抜きクリッピング
2123- --information:中抜きクリッピング@Basic_S v1.20 (for beta20 ) by σ軸
2173+ --information:中抜きクリッピング@Basic_S v1.30 (for beta21 ) by σ軸
21242174--label:Basic_S\クリッピング
21252175--track0:X,-4000,4000,0,0.1
21262176--track1:Y,-4000,4000,0,0.1
@@ -2220,7 +2270,7 @@ else
22202270end
22212271
22222272@小数ぼかし
2223- --information:小数ぼかし@Basic_S v1.20 (for beta20 ) by σ軸
2273+ --information:小数ぼかし@Basic_S v1.30 (for beta21 ) by σ軸
22242274--label:Basic_S\ぼかし
22252275--track@range:範囲,0,1000,5,0.01
22262276--track@aspect:縦横比,-100,100,0,0.001
@@ -2363,7 +2413,7 @@ if luma_weight > 0 then
23632413end
23642414
23652415@縁取りα
2366- --information:縁取りα@Basic_S v1.20 (for beta20 ) by σ軸
2416+ --information:縁取りα@Basic_S v1.30 (for beta21 ) by σ軸
23672417--label:Basic_S\装飾
23682418--track@size:サイズ,-500,500,5,1
23692419--track@blur:ぼかし,0,100,5,1
@@ -2540,7 +2590,7 @@ elseif alpha_front > 0 then
25402590end
25412591
25422592@四角縁取り
2543- --information:四角縁取り@Basic_S v1.20 (for beta20 ) by σ軸
2593+ --information:四角縁取り@Basic_S v1.30 (for beta21 ) by σ軸
25442594--label:Basic_S\装飾
25452595--track@size:サイズ,-500,500,5,0.01
25462596--track@aspect:縦横比,-100,100,0,0.001
@@ -2782,7 +2832,7 @@ else
27822832end
27832833
27842834@内側シャドウ
2785- --information:内側シャドウ@Basic_S v1.20 (for beta20 ) by σ軸
2835+ --information:内側シャドウ@Basic_S v1.30 (for beta21 ) by σ軸
27862836--label:Basic_S\装飾
27872837--track@X:X,-1000,1000,-40,0.01
27882838--track@Y:Y,-1000,1000,24,0.01
@@ -2940,7 +2990,7 @@ obj.copybuffer("object", "tempbuffer");
29402990obj.pixelshader("identity", "object", cache_name, nil, "mask");
29412991
29422992@画像ファイル合成
2943- --information:画像ファイル合成 v1.20 (for beta20 ) by σ軸
2993+ --information:画像ファイル合成 v1.30 (for beta21 ) by σ軸
29442994--label:Basic_S\加工
29452995--file@file:画像ファイル
29462996--track0:X,-4000,4000,0,0.01
@@ -3206,7 +3256,7 @@ obj.ox, obj.oy, obj.oz, obj.cx, obj.cy, obj.cz, obj.rx, obj.ry, obj.rz, obj.sx,
32063256obj.cx, obj.cy = obj.cx + dcx, obj.cy + dcy;
32073257
32083258@動画ファイル合成
3209- --information:動画ファイル合成 v1.20 (for beta20 ) by σ軸
3259+ --information:動画ファイル合成 v1.30 (for beta21 ) by σ軸
32103260--label:Basic_S\加工
32113261--file@file:動画ファイル
32123262--track@start:再生開始秒,0,3600,0,0.001
0 commit comments