レイヤー https://sup4.smilebasic.com/doku.php?id=reference:%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC
- 原点は左下(通常の座標系とY座標が反転している)
- 「変形情報配列のオフセットは画面幅または高さを1.0として指定する」
- 水平の場合、配列の(Y * 変形情報数 / 画面高さ)番目の変形情報を利用する
- 垂直の場合、配列の(X * 変形情報数 / 画面幅)番目の変形情報を利用する
- 1ピクセルごとに変形させたいなら、変形情報数 >= 画面高さ(水平)または幅(垂直) にする必要がある
- 「スケール値」とあるが実際には次のピクセルを参照しにいくための移動量なので、1より小さくなると拡大、1より大きくなると縮小に見える
- 変形情報配列が2要素の場合は指定されない側のオフセットは0、スケールは1とみなす
FOR Y=0 TO #SCR_H-1
XO=FILTER[Y*LEN(FILTER)/#SCR_H,0] 'Xオフセット
XS=FILTER[Y*LEN(FILTER)/#SCR_H,1] 'Xスケール
YO=FILTER[Y*LEN(FILTER)/#SCR_H,2] 'Yオフセット
YS=FILTER[Y*LEN(FILTER)/#SCR_H,3] 'Yスケール
FOR X=0 TO #SCR_W-1
VIEW[X,Y]=BUF[(X+XO)*XS][(Y+YO)*YS] 'バッファからピクセルを取得して描画
NEXT
NEXT
FOR X=0 TO #SCR_W-1
XO=FILTER[X*LEN(FILTER)/#SCR_W,0] 'Xオフセット
XS=FILTER[X*LEN(FILTER)/#SCR_W,1] 'Xスケール
YO=FILTER[X*LEN(FILTER)/#SCR_W,2] 'Yオフセット
YS=FILTER[X*LEN(FILTER)/#SCR_W,3] 'Yスケール
FOR Y=0 TO #SCR_H-1
VIEW[X,Y]=BUF[(X+XO)*XS][(Y+YO)*YS] 'バッファからピクセルを取得して描画
NEXT
NEXT