11--[[
22MIT License
3- Copyright (c) 2025 sigma-axis
3+ Copyright (c) 2025-2026 sigma-axis
44
55Permission is hereby granted, free of charge, to any person obtaining a copy
66of this software and associated documentation files (the "Software"), to deal
@@ -23,7 +23,7 @@ SOFTWARE.
2323https://mit-license.org/
2424]]
2525@四隅丸め
26- --information:四隅丸め@Basic_S v1.72 (for beta26 ) by σ軸
26+ --information:四隅丸め@Basic_S v1.73 (for beta28a ) 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.72 (for beta26 ) by σ軸
285+ --information:背景角丸矩形@Basic_S v1.73 (for beta28a ) by σ軸
286286--label:Basic_S\装飾
287287--track@pad_X:余白X,-1000,1000,10,1
288288--track@pad_Y:余白Y,-1000,1000,10,1
507507 local function full_escape(s) return ("%q"):format(s):gsub("[\128-\255]", full_escape_repl) end
508508 local pi_head = ("radii=require'string.buffer'.decode%s,shapes=require'string.buffer'.decode%s,line="):format(
509509 full_escape(buffer.encode(PI.radii)), full_escape(buffer.encode(PI.shapes)));
510- obj.setoption("drawtarget", "tempbuffer", W, H);
511510
512511 -- try to loading the images if specified.
513512 if has_image or has_image_back then
@@ -540,15 +539,15 @@ else
540539 end
541540
542541 -- render the background first.
543- obj.copybuffer ("object", "tempbuffer" );
542+ obj.clearbuffer ("object", W, H );
544543 if do_fill or clip > 0 or alpha_back > 0 then
545544 obj.clearbuffer("object", color);
546545 obj.effect("四隅丸め@Basic_S", "半径", radius,
547546 "半径均一", uniform and 1 or 0, "右上半径", r_RT, "右下半径", r_RB, "左下半径", r_LB,
548547 "縦横比", aspect, "縦横比固定", fixed_aspect, "形状", shape_name, "PI",
549548 pi_head..math.max(W, H, 4000));
550- obj.copybuffer("tempbuffer", "object");
551549 end
550+ obj.copybuffer("tempbuffer", "object");
552551
553552 -- next the chrome part.
554553 if not do_fill then
587586obj.cx, obj.cy = obj.cx + (L - R) / 2, obj.cy + (T - B) / 2;
588587
589588@背景楕円
590- --information:背景楕円@Basic_S v1.72 (for beta26 ) by σ軸
589+ --information:背景楕円@Basic_S v1.73 (for beta28a ) by σ軸
591590--label:Basic_S\装飾
592591--track@pad_X:余白X,-1000,1000,10,1
593592--track@pad_Y:余白Y,-1000,1000,10,1
@@ -701,7 +700,7 @@ obj.effect("背景角丸矩形@Basic_S", "クリッピング", clip,
701700 pad_L, pad_R, pad_T, pad_B, line_x, line_y, back_x, back_y));
702701
703702@背景菱形
704- --information:背景菱形@Basic_S v1.72 (for beta26 ) by σ軸
703+ --information:背景菱形@Basic_S v1.73 (for beta28a ) by σ軸
705704--label:Basic_S\装飾
706705--track@pad_X:余白X,-1000,1000,10,1
707706--track@pad_Y:余白Y,-1000,1000,10,1
@@ -818,7 +817,7 @@ obj.effect("背景角丸矩形@Basic_S", "クリッピング", clip,
818817 pad_L, pad_R, pad_T, pad_B, line_x, line_y, back_x, back_y));
819818
820819@透明度適用
821- --information:透明度適用@Basic_S v1.72 (for beta26 ) by σ軸
820+ --information:透明度適用@Basic_S v1.73 (for beta28a ) by σ軸
822821--label:Basic_S\加工
823822--filter
824823--track@alpha:透明度,-100,100,0,0.01
@@ -838,7 +837,7 @@ if apply_former then obj.alpha, alpha = 1, alpha * obj.alpha end
838837if alpha ~= 1 then obj.pixelshader("const_alpha", "object", nil, { alpha }, "mask") end
839838
840839@透明度二値化
841- --information:透明度二値化@Basic_S v1.72 (for beta26 ) by σ軸
840+ --information:透明度二値化@Basic_S v1.73 (for beta28a ) by σ軸
842841--label:Basic_S\加工
843842--filter
844843--track@alpha:基準透明度,0,100,50,0.01
@@ -880,7 +879,7 @@ if alpha > 0 or buffer < 1 then
880879end
881880
882881@色調補正
883- --information:色調補正@Basic_S v1.72 (for beta26 ) by σ軸
882+ --information:色調補正@Basic_S v1.73 (for beta28a ) by σ軸
884883--label:Basic_S\色調整
885884--filter
886885--track@add_light:明るさ,0,200,100,0.01
@@ -1171,7 +1170,7 @@ else
11711170end
11721171
11731172@回転中心
1174- --information:回転中心@Basic_S v1.72 (for beta26 ) by σ軸
1173+ --information:回転中心@Basic_S v1.73 (for beta28a ) by σ軸
11751174--label:Basic_S\配置
11761175--track@X:X,-4000,4000,0,0.01
11771176--track@Y:Y,-4000,4000,0,0.01
@@ -1181,7 +1180,7 @@ obj.cy = obj.cy + Y;
11811180obj.cz = obj.cz + Z;
11821181
11831182@回転中心アンカー指定
1184- --information:回転中心アンカー指定@Basic_S v1.72 (for beta26 ) by σ軸
1183+ --information:回転中心アンカー指定@Basic_S v1.73 (for beta28a ) by σ軸
11851184--label:Basic_S\配置
11861185--track0:X,-4000,4000,0,0.01
11871186--track1:Y,-4000,4000,0,0.01
@@ -1230,7 +1229,7 @@ obj.ox, obj.oy, obj.oz = obj.ox + dx, obj.oy + dy, obj.oz + dz;
12301229obj.cx,obj.cy,obj.cz = cx, cy, cz;
12311230
12321231@上下左右揃え
1233- --information:上下左右揃え@Basic_S v1.72 (for beta26 ) by σ軸
1232+ --information:上下左右揃え@Basic_S v1.73 (for beta28a ) by σ軸
12341233--label:Basic_S\配置
12351234--track@X:左右%,-100,100,0,0.001
12361235--track@Y:上下%,-100,100,0,0.001
@@ -1253,7 +1252,7 @@ if cx ~= obj.cx or cy ~= obj.cy then
12531252end
12541253
12551254@直角回転
1256- --information:直角回転@Basic_S v1.72 (for beta26 ) by σ軸
1255+ --information:直角回転@Basic_S v1.73 (for beta28a ) by σ軸
12571256--label:Basic_S\配置
12581257--select@rot:方向=0,なし=0,90°時計回り=1,180°反転=2,90°反時計回り=3,左右反転=4,上下反転=5,右上軸反転=6,左上軸反転=7
12591258--check@move_center:中心の位置を変更,false
@@ -1300,7 +1299,7 @@ obj.copybuffer("object", "tempbuffer");
13001299if not move_center then obj.cx, obj.cy = obj.cx + (cx - cx0), obj.cy + (cy - cy0) end
13011300
13021301@XYZ追加回転
1303- --information:XYZ追加回転@Basic_S v1.72 (for beta26 ) by σ軸
1302+ --information:XYZ追加回転@Basic_S v1.73 (for beta28a ) by σ軸
13041303--label:Basic_S\配置
13051304--track@X:X,-720,720,0,0.01
13061305--track@Y:Y,-720,720,0,0.01
@@ -1369,7 +1368,7 @@ if angle ~= 0 or draw then
13691368end
13701369
13711370@任意軸追加回転
1372- --information:任意軸追加回転@Basic_S v1.72 (for beta26 ) by σ軸
1371+ --information:任意軸追加回転@Basic_S v1.73 (for beta28a ) by σ軸
13731372--label:Basic_S\配置
13741373--track@angle:角度,-720,720,0,0.01
13751374--track0:回転軸X,-512,512,0,0.001
@@ -1617,7 +1616,7 @@ else
16171616end
16181617
16191618@傾斜
1620- --information:傾斜@Basic_S v1.72 (for beta26 ) by σ軸
1619+ --information:傾斜@Basic_S v1.73 (for beta28a ) by σ軸
16211620--label:Basic_S\変形
16221621--track@angle:角度,-80,80,0,0.001
16231622--track@slope:傾き%,-500,500,0,0.001
@@ -1696,7 +1695,7 @@ obj.copybuffer("object", "tempbuffer");
16961695obj.cx, obj.cy = obj.cx - cx, obj.cy - cy;
16971696
16981697@XY軸変形
1699- --information:XY軸変形@Basic_S v1.72 (for beta26 ) by σ軸
1698+ --information:XY軸変形@Basic_S v1.73 (for beta28a ) by σ軸
17001699--label:Basic_S\変形
17011700--value@axis_X:X軸,{100,0}
17021701--check@stretch_X:X長さ変更,false
@@ -1752,7 +1751,7 @@ obj.drawpoly(
17521751obj.copybuffer("object", "tempbuffer");
17531752
17541753@領域サイズ変更
1755- --information:領域サイズ変更@Basic_S v1.72 (for beta26 ) by σ軸
1754+ --information:領域サイズ変更@Basic_S v1.73 (for beta28a ) by σ軸
17561755--label:Basic_S\クリッピング
17571756--track@T:上,-4000,4000,0,1
17581757--track@B:下,-4000,4000,0,1
@@ -1840,7 +1839,7 @@ end
18401839obj.cx, obj.cy = cx, cy;
18411840
18421841@領域割合サイズ変更
1843- --information:領域割合サイズ変更@Basic_S v1.72 (for beta26 ) by σ軸
1842+ --information:領域割合サイズ変更@Basic_S v1.73 (for beta28a ) by σ軸
18441843--label:Basic_S\クリッピング
18451844--track@T:上%,-100,100,0,0.001
18461845--track@B:下%,-100,100,0,0.001
@@ -1895,7 +1894,7 @@ if L ~= 0 or R ~= 0 or T ~= 0 or B ~= 0 then
18951894end
18961895
18971896@領域サイズ指定
1898- --information:領域サイズ指定@Basic_S v1.72 (for beta26 ) by σ軸
1897+ --information:領域サイズ指定@Basic_S v1.73 (for beta28a ) by σ軸
18991898--label:Basic_S\クリッピング
19001899--track0:X,-4000,4000,0,0.1
19011900--track1:Y,-4000,4000,0,0.1
@@ -1992,7 +1991,7 @@ elseif L ~= 0 or R ~= 0 or T ~= 0 or B ~= 0 then
19921991end
19931992
19941993@カットずらし
1995- --information:カットずらし@Basic_S v1.72 (for beta26 ) by σ軸
1994+ --information:カットずらし@Basic_S v1.73 (for beta28a ) by σ軸
19961995--label:Basic_S\クリッピング
19971996--track0:ずれX,-4000,4000,40,1
19981997--track1:ずれY,-4000,4000,0,1
@@ -2190,7 +2189,7 @@ L, R, T, B =
21902189 math.ceil(B + obj.h / 2) - obj.h / 2;
21912190
21922191-- draw by shader.
2193- obj.setoption("drawtarget", "tempbuffer", R - L, B - T);
2192+ obj.clearbuffer( "tempbuffer", R - L, B - T);
21942193obj.pixelshader("place", "tempbuffer", "object", {
21952194 obj.w, obj.h; -L - obj.w / 2, -T - obj.h / 2 ; dy, -dx; X, Y;
21962195 c - (L * dy - T * dx); crop; gap; mode;
@@ -2203,7 +2202,7 @@ if not move_center then
22032202end
22042203
22052204@中抜きクリッピング
2206- --information:中抜きクリッピング@Basic_S v1.72 (for beta26 ) by σ軸
2205+ --information:中抜きクリッピング@Basic_S v1.73 (for beta28a ) by σ軸
22072206--label:Basic_S\クリッピング
22082207--track0:X,-4000,4000,0,0.1
22092208--track1:Y,-4000,4000,0,0.1
@@ -2306,7 +2305,7 @@ else
23062305end
23072306
23082307@小数ぼかし
2309- --information:小数ぼかし@Basic_S v1.72 (for beta26 ) by σ軸
2308+ --information:小数ぼかし@Basic_S v1.73 (for beta28a ) by σ軸
23102309--label:Basic_S\ぼかし
23112310--filter
23122311--track@range:範囲,0,1000,5,0.01
@@ -2429,13 +2428,13 @@ end
24292428
24302429-- apply the blur by shaders.
24312430local w, h = obj.w, obj.h;
2432- obj.setoption("drawtarget", "tempbuffer", h, w + span_x_i);
2431+ obj.clearbuffer( "tempbuffer", h, w + span_x_i);
24332432obj.pixelshader("convol", "tempbuffer", "object", { w, span_x_i, span_x_f, 1 / span_x });
2434- obj.effect("領域拡張 ", "右", span_x_i, "下", span_y_i);
2433+ obj.clearbuffer("object ", w + span_x_i, h + span_y_i);
24352434obj.pixelshader("convol", "object", "tempbuffer", { h, span_y_i, span_y_f, 1 / span_y });
2436- obj.setoption("drawtarget", "tempbuffer", h + span_y_i, w + 2 * span_x_i);
2435+ obj.clearbuffer( "tempbuffer", h + span_y_i, w + 2 * span_x_i);
24372436obj.pixelshader("convol", "tempbuffer", "object", { w + span_x_i, span_x_i, span_x_f, 1 / span_x });
2438- obj.effect("領域拡張 ", "右", span_x_i, "下", span_y_i);
2437+ obj.clearbuffer("object ", w + 2 * span_x_i, h + 2 * span_y_i);
24392438obj.pixelshader("convol", "object", "tempbuffer", { h + span_y_i, span_y_i, span_y_f, 1 / span_y });
24402439
24412440-- normalize the sum on the edges.
@@ -2453,7 +2452,7 @@ if luma_weight > 0 then
24532452end
24542453
24552454@縁取りα
2456- --information:縁取りα@Basic_S v1.72 (for beta26 ) by σ軸
2455+ --information:縁取りα@Basic_S v1.73 (for beta28a ) by σ軸
24572456--label:Basic_S\装飾
24582457--track@size:サイズ,-500,500,5,1
24592458--track@blur:ぼかし,0,100,5,1
@@ -2632,7 +2631,7 @@ elseif alpha_front > 0 then
26322631end
26332632
26342633@四角縁取り
2635- --information:四角縁取り@Basic_S v1.72 (for beta26 ) by σ軸
2634+ --information:四角縁取り@Basic_S v1.73 (for beta28a ) by σ軸
26362635--label:Basic_S\装飾
26372636--track@size:サイズ,-500,500,5,0.01
26382637--track@aspect:縦横比,-100,100,0,0.001
@@ -2825,7 +2824,7 @@ if size == 0 or alpha == 0 then
28252824end
28262825
28272826-- prepare border.
2828- obj.setoption("drawtarget", "tempbuffer", W, H);
2827+ obj.clearbuffer( "tempbuffer", W, H);
28292828obj.computeshader("convol_h", "tempbuffer", "object", {
28302829 size_x_i, size_x_f,
28312830 size > 0 and 2 * (size_x_i + 1) or (size_x_i + 1)
@@ -2876,7 +2875,7 @@ else
28762875end
28772876
28782877@内側シャドウ
2879- --information:内側シャドウ@Basic_S v1.72 (for beta26 ) by σ軸
2878+ --information:内側シャドウ@Basic_S v1.73 (for beta28a ) by σ軸
28802879--label:Basic_S\装飾
28812880--filter
28822881--track@X:X,-1000,1000,-40,0.01
@@ -3031,7 +3030,7 @@ obj.copybuffer("object", "tempbuffer");
30313030obj.pixelshader("identity", "object", cache_name, nil, "mask");
30323031
30333032@画像ファイル合成
3034- --information:画像ファイル合成 v1.72 (for beta26 ) by σ軸
3033+ --information:画像ファイル合成@Basic_S v1.73 (for beta28a ) by σ軸
30353034--label:Basic_S\加工
30363035--filter
30373036--file@file:画像ファイル
@@ -3230,7 +3229,7 @@ if W > 0 and H > 0 then
32303229
32313230 -- process rotate / zoom / tile.
32323231 if alpha > 0 then
3233- obj.setoption("drawtarget", "tempbuffer", R - L, B - T);
3232+ obj.clearbuffer( "tempbuffer", R - L, B - T);
32343233 obj.pixelshader("tile", "tempbuffer", "object", {
32353234 W, H;
32363235 (c * (L - X) + s * (T - Y)) / zoom + W / 2,
@@ -3259,6 +3258,7 @@ if W > 0 and H > 0 then
32593258 obj.copybuffer("object", cache_name);
32603259 obj.pixelshader("mask_by_luma", "object", "tempbuffer", { alpha }, "mask");
32613260 elseif alpha > 0 then
3261+ obj.setoption("drawtarget", "tempbuffer");
32623262 if mode_draw == 0 then
32633263 -- combine from front.
32643264 if L < -w / 2 or R > w / 2 or T < -h / 2 or B > h / 2 then
@@ -3303,7 +3303,7 @@ obj.ox, obj.oy, obj.oz, obj.cx, obj.cy, obj.cz, obj.rx, obj.ry, obj.rz, obj.sx,
33033303obj.cx, obj.cy = obj.cx + dcx, obj.cy + dcy;
33043304
33053305@動画ファイル合成
3306- --information:動画ファイル合成 v1.72 (for beta26 ) by σ軸
3306+ --information:動画ファイル合成@Basic_S v1.73 (for beta28a ) by σ軸
33073307--label:Basic_S\加工
33083308--filter
33093309--file@file:動画ファイル
@@ -3520,7 +3520,7 @@ if video_len > 0 and W > 0 and H > 0 then
35203520
35213521 -- process rotate / zoom / tile.
35223522 if alpha > 0 then
3523- obj.setoption("drawtarget", "tempbuffer", R - L, B - T);
3523+ obj.clearbuffer( "tempbuffer", R - L, B - T);
35243524 obj.pixelshader("tile", "tempbuffer", "object", {
35253525 W, H;
35263526 (c * (L - X) + s * (T - Y)) / zoom + W / 2,
@@ -3549,6 +3549,7 @@ if video_len > 0 and W > 0 and H > 0 then
35493549 obj.copybuffer("object", cache_name);
35503550 obj.pixelshader("mask_by_luma", "object", "tempbuffer", { alpha }, "mask");
35513551 elseif alpha > 0 then
3552+ obj.setoption("drawtarget", "tempbuffer");
35523553 if mode_draw == 0 then
35533554 -- combine from front.
35543555 if L < -w / 2 or R > w / 2 or T < -h / 2 or B > h / 2 then
@@ -3593,7 +3594,7 @@ obj.ox, obj.oy, obj.oz, obj.cx, obj.cy, obj.cz, obj.rx, obj.ry, obj.rz, obj.sx,
35933594obj.cx, obj.cy = obj.cx + dcx, obj.cy + dcy;
35943595
35953596@別レイヤー同期
3596- --information:別レイヤー同期 v1.72 (for beta26 ) by σ軸
3597+ --information:別レイヤー同期@Basic_S v1.73 (for beta28a ) by σ軸
35973598--label:Basic_S\配置
35983599--select@index_base:レイヤー位置=1,絶対指定=0,相対指定=1
35993600--value@index:番号,-1
0 commit comments