
GDevelopでRGBスプライトを重ねて白にする方法
GDevelop 5を使用して、赤、緑、青の3つのスプライトを重ねて白色を表現しようとした際に、期待通りの結果が得られないというフォーラムでの質問が共有されています。
問題の概要
投稿者は、赤、緑、青の各スプライトを作成し、それらを重ね合わせることで光の三原色(RGB)のように白色になることを期待しました。各スプライトの不透明度を75%に設定し、重ねた結果、白色ではなく予期せぬ奇妙な色になったとのことです。また、「RGB split (chromatic aberration)」ビヘイビアが各スプライトに適用されている点も指摘されています。

原因の解説
この現象は、GDevelopの描画方法に起因します。一般的に、コンピュータグラフィックスでは、スプライトやテクスチャの色は「減算合成」または「加算合成」といった描画モードに基づいて合成されます。光の三原色(RGB)のように色が加算されていく「加算合成」とは異なり、GDevelopのデフォルトの描画モードや「RGB split」ビヘイビアのようなエフェクトは、色の情報を直接的に加算して白を生成するようには設計されていない場合があります。
特に「RGB split」ビヘイビアは、色収差(Chromatic Aberration)をシミュレートするためのものであり、RGBチャンネルをわずかにずらして表示します。このエフェクトが適用されていると、単純な色の混合ではなく、意図しない色の変化が生じます。
期待される結果と実際の挙動
投稿者が例として挙げている「Spectrum」のようなゲームでは、おそらく加算合成に近い効果や、RGBチャンネルを個別に制御する特殊な描画処理が用いられていると考えられます。しかし、GDevelopの標準的なスプライト描画においては、RGBのライトを混ぜるのとは異なり、ピクセルシェーダーやブレンドモードの設定によっては、期待通りの白色にならないことがあります。
解決策の方向性
白色を表現したい場合、以下のようなアプローチが考えられます。
- 単一の白色スプライトを使用する: 最も簡単な方法は、最初から白色のスプライトを用意することです。
- ブレンドモードの検討: GDevelopのオブジェクトプロパティやイベントで、スプライトのブレンドモードを「加算(Add)」などに変更することで、色が明るくなり、結果的に白に近づく可能性があります。ただし、これは他のエフェクトやテクスチャの種類に依存します。
- シェーダーの使用: より高度な制御が必要な場合は、カスタムシェーダーを使用してRGBチャンネルの加算合成を正確に実装する方法があります。