OpenGLで制限された(256)カラーパレットをシミュレートするにはどうすればよいですか?


16

Twitterで、開発中のゲームの次のスクリーンショットを見つけました。

ここに画像の説明を入力してください

上の画像には色の制限がないようです。しかし、下部にある他の2つの画像には256色のパレットがあります。

私はで同様の効果を達成したい私のゲームを(私はOpenGLを使用しています)。どうすればできますか?



256色のグラフィックスのようにオールドスクールを描きたいですか、それとも24ビットのグラフィックスをオールドスクールのグラフィックスのように見せたいですか?つまり、プロセスをポストするか、実際に256色のパレットを使用しますか?ここではWebGLの中でパレット256色グラフィックスを行う方法です
gman

回答:


32

私はそのイメージの作成者です。

右側の画像は、カラールックアップテクスチャを使用してレンダリングされます。最後のGLSLシェーダーで、ディザーを適用し、RGB値を0 <= x <40の範囲の整数に変換し、それらを単一のインデックスに結合して、この画像で結果の色値を検索します。

カラールックアップテーブル

一番下の行は生のパレットです。

左の画像は、赤と緑のチャンネルを8つの値にダウンサンプリングし、青のチャンネルをディザーの適用後に4つの値にダウンサンプリングすることで、純粋にシェーダーで作成され、RGB332になります。また、7つの赤、9つの緑、4つの青の色合いで遊んでみましたが、結果は252色に過ぎませんでしたが、人間の目が最も敏感な緑に重点を置いています。


6

ここおよびおそらくここで説明するように、後処理ステップでカラーグレーディングルックアップテーブルを使用できます。

ここに画像の説明を入力してください

これを実装したら、スクリーンショットを作成し、その上にルックアップテクスチャをオーバーレイし、好きなグラフィックソフトウェアで編集してから、変更したルックアップテクスチャを再度取得するだけです。これには、取得したルックアップテーブルを色のサブセットに縮小することが含まれる場合と含まれない場合があります。

色の制限を考慮してルックアップテクスチャをロードするときは、すべてのフィルタリングを無効にして、追加の色が生成されないようにしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.