以下の画像は、背景の上にポイントサンプリングを使用してレンダリングされた2つのスプライトを示しています。
- 左の頭蓋骨には回転/スケーリングが適用されていないため、すべてのピクセルが背景と完全に一致しています。
- 右の頭蓋骨が回転/スケーリングされ、これにより軸が揃えられなくなった大きなピクセルが生成されます。
変換されたスプライトを右側にレンダリングし、残りのシーンと同じサイズのピクセルを軸に揃えたピクセルシェーダーを開発するにはどうすればよいですか?
これは、モンキーアイランドなどの古いゲームでスプライトスケーリングがどのように実装されたかに関連している可能性があります。これは、私が達成しようとしている効果ですが、回転が追加されているためです。
編集する
kaoDの提案に従って、私は問題を後処理として対処しようとしました。最も簡単な方法は、最初に別のレンダーターゲットにレンダーし(目的のピクセルサイズに一致するようにダウンサンプリングし)、2回目にレンダーするときにそれをアップスケールすることでした。上記の私の要件に対処しました。
最初に私はそれLinear -> Point
をやってみました、そして結果はこれでした:
歪みはありませんが、結果はぼやけて見え、ハイライトカラーのほとんどが失われます。私の意見では、それは私が必要としたレトロな外観を壊します。
2回目に試したところPoint -> Point
、結果は次のようになりました。
歪みはあるものの、私のニーズにはそれで十分かもしれませんが、静止画としては動きよりも見た目は良くなります。
実例として、これは効果のビデオですが、YouTubeはピクセルを除外しています。
ただし、移動中の歪みの量を減らしながら、くっきりした外観を維持できる優れたサンプリングソリューションを誰かが思いついた場合は、質問を数日間開いたままにしておきます。
SpriteBatch
を使用して各スプライト呼び出し間でシェーダーパラメーターを変更するには、イミディエイトモードを使用する必要があるため、問題はありません。私はこれで行きます:)