shade/burst

shadeは、スプライトの画像を二色に塗り分ける命令。
具体例として立ち絵でググったらpixivで先頭ページに出てくる画像を使ってみます。

shadeの実例

shadeの書式は以下のようになります。

lsp 200,":c;image.png",0,0
; (スプライト番号),(セル番号),(マスク番号), (x),(y), (r1),(g1),(b1), (r2),(g2),(b2)
exec_dll "sp.dll/shade,200,0,0,0,0,255,255,255,0,0,0"
; 200番のスプライトのセル番号0の実体部分について、
; (0,0)の位置にある色があったら、全て(255, 255, 255)の色(=白)に塗り替える。そうでなければ、(0, 0, 0)の色(=黒)に塗り替える。

実際にはこのようになります。

burstの実例

burstの書式は以下のようになります。

; (スプライト番号),(セル番号),(マスク番号), (x),(y), (w),(h)
exec_dll "sp.dll/burst,200,0,0,0,0,3,3"
; 200番のスプライトのセル番号0の実体部分について、
; (0,0)の位置にある色があったら、そこから幅プラスマイナスw, 高さプラスマイナスhの範囲にその色が影響を与える。

shadeに続いてburstを実行すると、このようになります。

白い部分が黒い部分を侵食して、アンチエイリアス状になってますね。

その結果の実行例

bg "back.jpg",0
lsp 200,":mrin.png;rin.png",0,0
exec_dll "sp.dll/shade,200,0,1,0,0,255,255,255,0,0,0"
exec_dll "sp.dll/burst,200,0,1,0,0,3,3"
print 1
click

こんな風になります。アルファブレンドのマスク画像作るの面倒と言うような人が使うといいのかも知れません。

応用例

ちなみに、burstのかわりにsmoothを使うと、以下のようになります。


若干フチが残りますね。