@@ -23,7 +23,7 @@ SOFTWARE.
2323https://mit-license.org/
2424]]
2525@四隅丸め
26- --information:四隅丸め@Basic_S v1.80-beta1 (for beta29) by σ軸
26+ --information:四隅丸め@Basic_S v1.80-beta2 (for beta29) by σ軸
2727--label:Basic_S\クリッピング
2828--filter
2929--track@radius:半径,0,2000,40,0.01
@@ -282,7 +282,7 @@ obj.pixelshader("carve", "object", nil, {
282282}, "mask");
283283
284284@背景角丸矩形
285- --information:背景角丸矩形@Basic_S v1.80-beta1 (for beta29) by σ軸
285+ --information:背景角丸矩形@Basic_S v1.80-beta2 (for beta29) by σ軸
286286--label:Basic_S\装飾
287287--track@pad_X:余白X,-1000,1000,10,1
288288--track@pad_Y:余白Y,-1000,1000,10,1
586586obj.cx, obj.cy = obj.cx + (L - R) / 2, obj.cy + (T - B) / 2;
587587
588588@背景楕円
589- --information:背景楕円@Basic_S v1.80-beta1 (for beta29) by σ軸
589+ --information:背景楕円@Basic_S v1.80-beta2 (for beta29) by σ軸
590590--label:Basic_S\装飾
591591--track@pad_X:余白X,-1000,1000,10,1
592592--track@pad_Y:余白Y,-1000,1000,10,1
@@ -700,7 +700,7 @@ obj.effect("背景角丸矩形@Basic_S", "クリッピング", clip,
700700 pad_L, pad_R, pad_T, pad_B, line_x, line_y, back_x, back_y));
701701
702702@背景菱形
703- --information:背景菱形@Basic_S v1.80-beta1 (for beta29) by σ軸
703+ --information:背景菱形@Basic_S v1.80-beta2 (for beta29) by σ軸
704704--label:Basic_S\装飾
705705--track@pad_X:余白X,-1000,1000,10,1
706706--track@pad_Y:余白Y,-1000,1000,10,1
@@ -817,7 +817,7 @@ obj.effect("背景角丸矩形@Basic_S", "クリッピング", clip,
817817 pad_L, pad_R, pad_T, pad_B, line_x, line_y, back_x, back_y));
818818
819819@透明度適用
820- --information:透明度適用@Basic_S v1.80-beta1 (for beta29) by σ軸
820+ --information:透明度適用@Basic_S v1.80-beta2 (for beta29) by σ軸
821821--label:Basic_S\加工
822822--filter
823823--track@alpha:透明度,-100,100,0,0.01
@@ -837,7 +837,7 @@ if apply_former then obj.alpha, alpha = 1, alpha * obj.alpha end
837837if alpha ~= 1 then obj.pixelshader("const_alpha", "object", nil, { alpha }, "mask") end
838838
839839@透明度二値化
840- --information:透明度二値化@Basic_S v1.80-beta1 (for beta29) by σ軸
840+ --information:透明度二値化@Basic_S v1.80-beta2 (for beta29) by σ軸
841841--label:Basic_S\加工
842842--filter
843843--track@alpha:基準透明度,0,100,50,0.01
@@ -879,7 +879,7 @@ if alpha > 0 or buffer < 1 then
879879end
880880
881881@色調補正
882- --information:色調補正@Basic_S v1.80-beta1 (for beta29) by σ軸
882+ --information:色調補正@Basic_S v1.80-beta2 (for beta29) by σ軸
883883--label:Basic_S\色調整
884884--filter
885885--track@add_light:明るさ,0,200,100,0.01
@@ -1169,8 +1169,114 @@ else
11691169 });
11701170end
11711171
1172+ @色チャンネル入れ替え
1173+ --information:色チャンネル入れ替え@Basic_S v1.80-beta2 (for beta29) by σ軸
1174+ --label:Basic_S\色調整
1175+ --filter
1176+ --select@comp_R:赤適用元=1,0固定=0,赤=1,緑=2,青=3,アルファ=4,赤反転=5,緑反転=6,青反転=7,アルファ反転=8,1固定=9
1177+ --select@comp_G:緑適用元=2,0固定=0,赤=1,緑=2,青=3,アルファ=4,赤反転=5,緑反転=6,青反転=7,アルファ反転=8,1固定=9
1178+ --select@comp_B:青適用元=3,0固定=0,赤=1,緑=2,青=3,アルファ=4,赤反転=5,緑反転=6,青反転=7,アルファ反転=8,1固定=9
1179+ --select@comp_A:アルファ適用元=4,0固定=0,赤=1,緑=2,青=3,アルファ=4,赤反転=5,緑反転=6,青反転=7,アルファ反転=8,1固定=9
1180+ --group:その他,false
1181+ --check@premult:乗算済みα,true
1182+ --value@PI:PI,{}
1183+ --[[pixelshader@premult:
1184+ Texture2D src : register(t0);
1185+ cbuffer constant0 : register(b0) {
1186+ float4 v;
1187+ float4x4 mat;
1188+ };
1189+ float4 premult(float4 pos : SV_Position) : SV_Target
1190+ {
1191+ float4 c = src.Load(int3(pos.xy, 0));
1192+ c = v + mul(mat, c);
1193+ c.a = saturate(c.a);
1194+ c.rgb = clamp(c.rgb, 0, c.a);
1195+ return c;
1196+ }
1197+ ]]
1198+ --[[pixelshader@nonmult:
1199+ Texture2D src : register(t0);
1200+ cbuffer constant0 : register(b0) {
1201+ float4 v;
1202+ float4x4 mat;
1203+ };
1204+ float4 nonmult(float4 pos : SV_Position) : SV_Target
1205+ {
1206+ float4 c = src.Load(int3(pos.xy, 0));
1207+ c.rgb = c.a > 0 ? c.rgb / c.a : 0;
1208+ c = saturate(v + mul(mat, c));
1209+ c.rgb *= c.a;
1210+ return c;
1211+ }
1212+ ]]
1213+ local obj, math, tonumber, type = obj, math, tonumber, type;
1214+
1215+ -- take parameters.
1216+ --[==[
1217+ PI = {
1218+ comp_R: string?,
1219+ comp_G: string?,
1220+ comp_B: string?,
1221+ premult: boolean|number|nil,
1222+ }
1223+ ]==]
1224+ local function as_bool(t, v)
1225+ if type(t) == "boolean" then return t;
1226+ elseif type(t) == "number" then return t ~= 0;
1227+ else return v end
1228+ end
1229+ local name2num = {
1230+ ["0固定"] = 0,
1231+ ["赤"] = 1, ["緑"] = 2, ["青"] = 3, ["アルファ"] = 4,
1232+ ["赤反転"] = 5, ["緑反転"] = 6, ["青反転"] = 7, ["アルファ反転"] = 8,
1233+ ["1固定"] = 9,
1234+ };
1235+ if type(PI.comp_R) == "string" then
1236+ comp_R = name2num[PI.comp_R] or comp_R;
1237+ end
1238+ if type(PI.comp_G) == "string" then
1239+ comp_G = name2num[PI.comp_G] or comp_G;
1240+ end
1241+ if type(PI.comp_B) == "string" then
1242+ comp_B = name2num[PI.comp_B] or comp_B;
1243+ end
1244+ if type(PI.comp_A) == "string" then
1245+ comp_A = name2num[PI.comp_A] or comp_A;
1246+ end
1247+ premult = as_bool(PI.premult, premult);
1248+ if comp_R == 1 and comp_G == 2 and comp_B == 3 and comp_A ==4 then return end
1249+
1250+ -- normalize parameters.
1251+ comp_R = math.min(math.max(comp_R, 0), 9);
1252+ comp_G = math.min(math.max(comp_G, 0), 9);
1253+ comp_B = math.min(math.max(comp_B, 0), 9);
1254+ comp_A = math.min(math.max(comp_A, 0), 9);
1255+
1256+ -- further calculations.
1257+ local params = {
1258+ 0, 0, 0, 0; -- constant vector.
1259+ 0, 0, 0, 0, -- column-major matrix.
1260+ 0, 0, 0, 0,
1261+ 0, 0, 0, 0,
1262+ 0, 0, 0, 0;
1263+ };
1264+ for i, comp in ipairs{ comp_R, comp_G, comp_B, comp_A } do
1265+ local inv = comp >= 5;
1266+ if inv then
1267+ params[i] = 1;
1268+ comp = (comp + 1) % 5;
1269+ end
1270+ if comp > 0 then
1271+ params[4 * comp + i] = inv and -1 or 1;
1272+ end
1273+ end
1274+
1275+ -- apply shader.
1276+ obj.pixelshader(premult and "premult" or "nonmult", "object", "object", params);
1277+
11721278@回転中心
1173- --information:回転中心@Basic_S v1.80-beta1 (for beta29) by σ軸
1279+ --information:回転中心@Basic_S v1.80-beta2 (for beta29) by σ軸
11741280--label:Basic_S\配置
11751281--track@X:X,-4000,4000,0,0.01
11761282--track@Y:Y,-4000,4000,0,0.01
@@ -1180,7 +1286,7 @@ obj.cy = obj.cy + Y;
11801286obj.cz = obj.cz + Z;
11811287
11821288@回転中心アンカー指定
1183- --information:回転中心アンカー指定@Basic_S v1.80-beta1 (for beta29) by σ軸
1289+ --information:回転中心アンカー指定@Basic_S v1.80-beta2 (for beta29) by σ軸
11841290--label:Basic_S\配置
11851291--track0:X,-4000,4000,0,0.01
11861292--track1:Y,-4000,4000,0,0.01
@@ -1229,7 +1335,7 @@ obj.ox, obj.oy, obj.oz = obj.ox + dx, obj.oy + dy, obj.oz + dz;
12291335obj.cx,obj.cy,obj.cz = cx, cy, cz;
12301336
12311337@上下左右揃え
1232- --information:上下左右揃え@Basic_S v1.80-beta1 (for beta29) by σ軸
1338+ --information:上下左右揃え@Basic_S v1.80-beta2 (for beta29) by σ軸
12331339--label:Basic_S\配置
12341340--track@X:左右%,-100,100,0,0.001
12351341--track@Y:上下%,-100,100,0,0.001
@@ -1252,7 +1358,7 @@ if cx ~= obj.cx or cy ~= obj.cy then
12521358end
12531359
12541360@直角回転
1255- --information:直角回転@Basic_S v1.80-beta1 (for beta29) by σ軸
1361+ --information:直角回転@Basic_S v1.80-beta2 (for beta29) by σ軸
12561362--label:Basic_S\配置
12571363--select@rot:方向=0,なし=0,90°時計回り=1,180°反転=2,90°反時計回り=3,左右反転=4,上下反転=5,右上軸反転=6,左上軸反転=7
12581364--check@move_center:中心の位置を変更,false
@@ -1299,7 +1405,7 @@ obj.copybuffer("object", "tempbuffer");
12991405if not move_center then obj.cx, obj.cy = obj.cx + (cx - cx0), obj.cy + (cy - cy0) end
13001406
13011407@XYZ追加回転
1302- --information:XYZ追加回転@Basic_S v1.80-beta1 (for beta29) by σ軸
1408+ --information:XYZ追加回転@Basic_S v1.80-beta2 (for beta29) by σ軸
13031409--label:Basic_S\配置
13041410--track@X:X,-720,720,0,0.01
13051411--track@Y:Y,-720,720,0,0.01
@@ -1368,7 +1474,7 @@ if angle ~= 0 or draw then
13681474end
13691475
13701476@任意軸追加回転
1371- --information:任意軸追加回転@Basic_S v1.80-beta1 (for beta29) by σ軸
1477+ --information:任意軸追加回転@Basic_S v1.80-beta2 (for beta29) by σ軸
13721478--label:Basic_S\配置
13731479--track@angle:角度,-720,720,0,0.01
13741480--track0:回転軸X,-512,512,0,0.001
@@ -1616,7 +1722,7 @@ else
16161722end
16171723
16181724@傾斜
1619- --information:傾斜@Basic_S v1.80-beta1 (for beta29) by σ軸
1725+ --information:傾斜@Basic_S v1.80-beta2 (for beta29) by σ軸
16201726--label:Basic_S\変形
16211727--track@angle:角度,-80,80,0,0.001
16221728--track@slope:傾き%,-500,500,0,0.001
@@ -1695,7 +1801,7 @@ obj.copybuffer("object", "tempbuffer");
16951801obj.cx, obj.cy = obj.cx - cx, obj.cy - cy;
16961802
16971803@XY軸変形
1698- --information:XY軸変形@Basic_S v1.80-beta1 (for beta29) by σ軸
1804+ --information:XY軸変形@Basic_S v1.80-beta2 (for beta29) by σ軸
16991805--label:Basic_S\変形
17001806--value@axis_X:X軸,{100,0}
17011807--check@stretch_X:X長さ変更,false
@@ -1751,7 +1857,7 @@ obj.drawpoly(
17511857obj.copybuffer("object", "tempbuffer");
17521858
17531859@領域サイズ変更
1754- --information:領域サイズ変更@Basic_S v1.80-beta1 (for beta29) by σ軸
1860+ --information:領域サイズ変更@Basic_S v1.80-beta2 (for beta29) by σ軸
17551861--label:Basic_S\クリッピング
17561862--track@T:上,-4000,4000,0,1
17571863--track@B:下,-4000,4000,0,1
@@ -1839,7 +1945,7 @@ end
18391945obj.cx, obj.cy = cx, cy;
18401946
18411947@領域割合サイズ変更
1842- --information:領域割合サイズ変更@Basic_S v1.80-beta1 (for beta29) by σ軸
1948+ --information:領域割合サイズ変更@Basic_S v1.80-beta2 (for beta29) by σ軸
18431949--label:Basic_S\クリッピング
18441950--track@T:上%,-100,100,0,0.001
18451951--track@B:下%,-100,100,0,0.001
@@ -1894,7 +2000,7 @@ if L ~= 0 or R ~= 0 or T ~= 0 or B ~= 0 then
18942000end
18952001
18962002@領域サイズ指定
1897- --information:領域サイズ指定@Basic_S v1.80-beta1 (for beta29) by σ軸
2003+ --information:領域サイズ指定@Basic_S v1.80-beta2 (for beta29) by σ軸
18982004--label:Basic_S\クリッピング
18992005--track0:X,-4000,4000,0,0.1
19002006--track1:Y,-4000,4000,0,0.1
@@ -1991,7 +2097,7 @@ elseif L ~= 0 or R ~= 0 or T ~= 0 or B ~= 0 then
19912097end
19922098
19932099@カットずらし
1994- --information:カットずらし@Basic_S v1.80-beta1 (for beta29) by σ軸
2100+ --information:カットずらし@Basic_S v1.80-beta2 (for beta29) by σ軸
19952101--label:Basic_S\クリッピング
19962102--track0:ずれX,-4000,4000,40,1
19972103--track1:ずれY,-4000,4000,0,1
@@ -2202,7 +2308,7 @@ if not move_center then
22022308end
22032309
22042310@中抜きクリッピング
2205- --information:中抜きクリッピング@Basic_S v1.80-beta1 (for beta29) by σ軸
2311+ --information:中抜きクリッピング@Basic_S v1.80-beta2 (for beta29) by σ軸
22062312--label:Basic_S\クリッピング
22072313--track0:X,-4000,4000,0,0.1
22082314--track1:Y,-4000,4000,0,0.1
@@ -2305,7 +2411,7 @@ else
23052411end
23062412
23072413@小数ぼかし
2308- --information:小数ぼかし@Basic_S v1.80-beta1 (for beta29) by σ軸
2414+ --information:小数ぼかし@Basic_S v1.80-beta2 (for beta29) by σ軸
23092415--label:Basic_S\ぼかし
23102416--filter
23112417--track@range:範囲,0,1000,5,0.01
@@ -2452,7 +2558,7 @@ if luma_weight > 0 then
24522558end
24532559
24542560@縁取りα
2455- --information:縁取りα@Basic_S v1.80-beta1 (for beta29) by σ軸
2561+ --information:縁取りα@Basic_S v1.80-beta2 (for beta29) by σ軸
24562562--label:Basic_S\装飾
24572563--track@size:サイズ,-500,500,5,1
24582564--track@blur:ぼかし,0,100,5,1
@@ -2631,7 +2737,7 @@ elseif alpha_front > 0 then
26312737end
26322738
26332739@四角縁取り
2634- --information:四角縁取り@Basic_S v1.80-beta1 (for beta29) by σ軸
2740+ --information:四角縁取り@Basic_S v1.80-beta2 (for beta29) by σ軸
26352741--label:Basic_S\装飾
26362742--track@size:サイズ,-500,500,5,0.01
26372743--track@aspect:縦横比,-100,100,0,0.001
@@ -2875,7 +2981,7 @@ else
28752981end
28762982
28772983@内側シャドウ
2878- --information:内側シャドウ@Basic_S v1.80-beta1 (for beta29) by σ軸
2984+ --information:内側シャドウ@Basic_S v1.80-beta2 (for beta29) by σ軸
28792985--label:Basic_S\装飾
28802986--filter
28812987--track@X:X,-1000,1000,-40,0.01
@@ -3030,7 +3136,7 @@ obj.copybuffer("object", "tempbuffer");
30303136obj.pixelshader("identity", "object", cache_name, nil, "mask");
30313137
30323138@画像ファイル合成
3033- --information:画像ファイル合成@Basic_S v1.80-beta1 (for beta29) by σ軸
3139+ --information:画像ファイル合成@Basic_S v1.80-beta2 (for beta29) by σ軸
30343140--label:Basic_S\加工
30353141--filter
30363142--file@file:画像ファイル
@@ -3333,7 +3439,7 @@ obj.ox, obj.oy, obj.oz, obj.cx, obj.cy, obj.cz, obj.rx, obj.ry, obj.rz, obj.sx,
33333439obj.cx, obj.cy = obj.cx + dcx, obj.cy + dcy;
33343440
33353441@動画ファイル合成
3336- --information:動画ファイル合成@Basic_S v1.80-beta1 (for beta29) by σ軸
3442+ --information:動画ファイル合成@Basic_S v1.80-beta2 (for beta29) by σ軸
33373443--label:Basic_S\加工
33383444--filter
33393445--file@file:動画ファイル
@@ -3654,7 +3760,7 @@ obj.ox, obj.oy, obj.oz, obj.cx, obj.cy, obj.cz, obj.rx, obj.ry, obj.rz, obj.sx,
36543760obj.cx, obj.cy = obj.cx + dcx, obj.cy + dcy;
36553761
36563762@別レイヤー同期
3657- --information:別レイヤー同期@Basic_S v1.80-beta1 (for beta29) by σ軸
3763+ --information:別レイヤー同期@Basic_S v1.80-beta2 (for beta29) by σ軸
36583764--label:Basic_S\配置
36593765--select@index_base:レイヤー位置=1,絶対指定=0,相対指定=1
36603766--value@index:番号,-1
0 commit comments