Swanman's Horizon

性欲をもてあましつつなんらかの話をするよ。

FMXでセルシェーディング


前回までの全力わはー

FireMonkeyでシェーダを使えるようになったLynaは、全米川下り選手権へ出場するのだった。

セルシェーディングとは

google:セルシェーディング

とりあえず成果

ダウンロード

中身の説明

セルシェーディングです。詳しい説明は上のグーグル先生に任せるとして、要は影がセル絵というかアニメ塗りというか、あんな感じになります。計算方法は色々あるんですが、参照用のテクスチャすら使わないかなり初歩的な計算を使用してます。

パラメータの説明としては、Thresholdはどれくらいを影側とするか、どれくらいを光側とするかのしきい値です。0.0〜1.0で指定します。その判定で得られた領域毎にDarkColorとLightColorを乗算するようになっています。Textureは未指定でもOKです。ライトは1個まで対応してますが、設定にかかわらずディレクショナルライトとして扱います。

今回はめんどくさかったのでDX9版しか用意しませんでした。なので使用する際はGlobalUseDX10 := False;のような指定が必須です。あと座標系を合わせずに適当に計算してるので、0,0,0から移動したり回転したりすると破綻するかもしれませんが、その辺は各々に任せるということでひとつ。

その他

例によって例のごとく中身も説明も雑なので、不明点等あれば [Twitter:@lynatan] までお願いします。