これは奇妙に聞こえます。しかし、私は古いdos 16ビットゲームを複製しようとしています。ゲームには素敵な色のバンディングがあった、本当に粗いグラデーションがありました。私はそれらのバンドを再現したい。シェーダでカラーバンディングを追加する方法
シェーダを実装したとき、明らかにグラデーションを非常にスムーズにレンダリングします。いいですが本物ではありません。私はフラグメントシェーダ内でこれらのバンドをどのように偽装できるのだろうかと思っています。どのような種類のアルゴリズムがバンドを残すか。
これは奇妙に聞こえます。しかし、私は古いdos 16ビットゲームを複製しようとしています。ゲームには素敵な色のバンディングがあった、本当に粗いグラデーションがありました。私はそれらのバンドを再現したい。シェーダでカラーバンディングを追加する方法
シェーダを実装したとき、明らかにグラデーションを非常にスムーズにレンダリングします。いいですが本物ではありません。私はフラグメントシェーダ内でこれらのバンドをどのように偽装できるのだろうかと思っています。どのような種類のアルゴリズムがバンドを残すか。
色の値を「ビン」することができます。通常RGBは0から255の間の値を持ちます(浮動小数点を使用している場合は0-1、256段では0-1)。これを16ステップに減らしてみてください。 0と16の間のすべてが0になり、16と32の間のすべてが16になります。コードでは、floor(color/16)*16
のようになります。
4444レンダーターゲットを試してみると、そこに目に見えるバンディングがあるはずです。
これで十分な制御ができない場合は、ポイントフィルタリングを使用して3DテクスチャのルックアップとしてRGB値を使用できます。 3Dテクスチャ内のエントリを使用して、任意の限定されたカラーパレットを定義することができる。
このソリューションは、カラーターゲット自体のビット深度を操作するよりも、芸術的なコントロールを提供します。この方法で色を量子化したら、元のシステムを模したあらかじめ選択したカラーパレットにインデックスを付けることもできます。 – warrenm