グラウドシェーディングされた頂点色のポリゴンをディザリングしてバンディングを除去する

StackOverflow https://stackoverflow.com/questions/198534

質問

OpenGL ES を使用しています.apple.com / iphone / "rel =" nofollow noreferrer ">低解像度の組み込みデバイス。

頂点カラーリングを使用して、レンダリングされたシーンの背景として機能する大きなポリゴンに垂直カラーグラデーションを適用しました。色のグラデーションではっきりと見えるバンディングアーティファクトを見ることができます。

主な経験は、ソフトウェアレンダラーの使用です。ソフトウェアレンダラーでは、マッハバンドおよびその他のバンディングアーティファクトをディザリングするのが一般的です。多くの場合、フレームのレンダリングの量子化ステップでこれを行います。ここでは、浮動小数点の高精度な色表現が、通常は整数コンポーネントを使用して低精度の出力に変換されます。最終整数成分をランダムに切り上げまたは切り捨てることでディザリングを実現し、画像にノイズをほんの少しだけ挿入して、目を欺いて色の連続性と滑らかなブレンドを確認します。

私の質問は、OpenGL ESを使用してこれを達成できるかどうかです。この種のディザリングはOpenGLパイプラインの一部ですか、それとも頂点カラーリングをスキップしてグラデーションをテクスチャにレンダリングし、少しノイズを適用する必要がありますか?

役に立ちましたか?

解決

glEnable(GL_DITHER)を試しましたか?通常、最初は有効になっていますが、GL ESや組み込みデバイスで作業したことはありません。また、フレームバッファーで使用している色の深さにも依存する可能性があります。チャンネルごとに4ビットしかない場合は、アーティファクトが発生します。

他のヒント

OGLパイプにあなたが説明した効果について聞いたことがありません。ただし、この時点では私の知識は少し古いため、間違っている可能性があります。可能な場合は、テクスチャにショットをレンダリングします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top