2次元のホラーゲームの照明モデル

画像
最もせっかちなもの: chrome書かれた 遅延デモ 。 マシンにロードするのに20秒かかります。

このアイデアは約2年前に思いついた。 暗い場所では、主に青みがかった色調で、シャープネスがわずかに失われた目に見える物体を知覚するという事実に注目しました。 おそらくこれは純粋に心理的な認識ですが、私たちは今それについて話していません。 このような照明機能を使用すると、2Dゲームがどのように見えるか興味がありました。 見つけるために、私はシェーダーを理解せずに、私にとって最も便利な言語であるjavascriptでデモをスケッチしました。 効果は薄暗い領域に適用されるため、画面上で何が起こっているかを最も目立たせることはできませんが、非常に目立つ魅力を追加します。

結果は3つのバッファーから取得されます。
ポストエフェクトが適用される最初のバッファーに画像が形成されます。
2番目のバッファは、モーションブラーライトマップに使用されます。 意味としては、「メモリ」を実装します。エリアがライトアップされた後、光源がまだ向けられていない場合でも、しばらくは表示されます。
3番目に、ライトマップ自体が描画されます-現在のフレームの幾何学的な影の照明。

2番目のバッファーの各フレームは影付きでぼやけており、3番目のバッファーがその上で強調表示されています。 結果は、ポストエフェクトの情報として使用されます。比較的高い照度では、ピクセルは標準アルゴリズムに従ってシェーディングされ、低い場合は、赤と緑のチャネルのわずかなぼかしと段階的なフェードが既に開始されます。

私の実装では、ポストエフェクトからのぼかしは、起動前に255半径で計算され、20〜30秒かかります。

幾何学的な影がなく、豊富なbydcodeを備えた、より機敏な古いバージョンをここで突くことができます
新鮮で影付き- こちら
両方のバージョンはクロムで書かれています。 私のFirefoxもすべてを描画しようとしているようですが、マウスの座標を認識していません(誰かがこれを修正する方法を教えてくれれば感謝します)。 オペラはありません。

最新バージョンの管理:
LMB-シャドウを投影する凸状オブジェクトを作成します。 作成の方向(時計回りまたは反時計回り)には違いがあります。
RMB-腕の下のオブジェクトの作成/削除をキャンセルします。
SCM-2番目の光源をオン/オフにします。

ぼかしアルゴリズムはここから取得されました
最近リリースされたゲームの背景画像彼らはピクセルを出血させます。

Source: https://habr.com/ru/post/J151514/


All Articles