アンチエイリアスの処理を行なう時に,特に重要なのはメモリ使用量と速度だ。となれば,Pixel Benderを使うしかない。 下調べ で,色々なアンチエイリアスの方法があることがわかった訳だが,どの方法を取るか。スーパーサンプリングが一般的なようだが,そのためにはPixel Benderに入力する画像(フォント描画)を最低2倍にしなければならない。できればそれは避けたい。 そこでドッターがアンチエイリアスをかける時の感覚をPixel Benderで再現してみたらどうだろうと考えた。 ドット絵の解説本をいくつか当たりつつ考えるに,その感覚とは 「上下左右に隣接するカラーピクセルが2つ以上ある透明ピクセルに,隣接しているカラーピクセルの中間色を割り当てる」 というように見えた。 それを実装するとこうだ。 <languageVersion : 1.0;> kernel EdgeAntiAliasFilter < namespace : "junkoro"; vendor : "Masahito Ohtsuka"; version : 1; description : "edge anti-aliasing filter"; > { //入力画像 input image4 src; //出力ピクセル output pixel4 dst; #if !AIF_FLASH_TARGET //フィルタースイッチ parameter bool on < defaultValue:bool(true); >; //補完エッジ表示スイッチ parameter bool showEdge; //補完エッジピクセルカラー parameter pixel4 edgeColor < minValue:pixel4(0); maxValue:pixel4(1); defaultValue:pixel4(1, 0, 0, 1); >; #endif ...