0

BlitzMax で、スター ウォーズのライトセーバーやレーザービームのような輝くライン エフェクトを作成したいと考えています。リアルタイムである必要はありませんが、TImage オブジェクトに対してのみ行い、後でアニメーションで使用するために PNG に保存することもできます。3D 機能は喜んで使用しますが、これは 2D ゲームで使用するためのものです。

黒/スペースの背景になるので、私の戦略は、色と透明度の高い一連の白いぼやけた線を描き、最終的に中心線のぼやけを減らして白くすることです. 私が描きたいのは、実際にはベジェ曲線です。曲線を描くのは簡単ですが、上記の手法を使用して優れたレーザー/ネオン効果を作成することはできません。そのため、1 ピクセルのベジエ曲線である、よくレンダリングされるものにぼかし効果/シェーダーを使用する方が良いと思います。

私が抱えていた問題は次のとおりです。

  • 線が描かれている画面の特定の領域だけにシェーダーを適用します。テクスチャに線を描画し、そのテクスチャをぼかして png を保存する方法があれば、それを聞くのは素晴らしいことです。これを行う方法があるはずですが、適切な要素をまだ連携させることができていません. このようなことに詳しい人からの助けをいただければ幸いです。
  • 2D 呼び出しだけを使用すると、理解と再利用が容易になり、有利になる可能性があります。
  • 透過性/アルファ要素を保持する PNG を保存する方法を知っておくと非常に便利です。

ps この投稿 (および他の投稿) を確認し、サンプルを動作させ、独自の 5x5 シェーダーを開発しました。しかし、それは 3D であり、2D または特定の領域だけにうまく変換されないように見えるシーン全体のものです。 http://www.blitzbasic.com/Community/posts.php?topic=85263

4

1 に答える 1

0

わかりました、まあ、私は BlitzMax については知りません。そのため、実装について詳しく説明することはできませんが、いくつかの指針を示します。

  • イメージの特定の部分だけにシェーダーを適用するには、シーンを構成するために複数のレンダリング パスを使用することをお勧めします。
  • ピクセル アクセスがあれば、もちろん、フラグメント シェーダーと同じことを 2D で「昔ながらの方法」で実行できます。getpixel/setpixel のようなもの。ただし、この方法ではパフォーマンスが大幅に低下します。
  • アルファ チャネルがそのままのテクスチャがある場合は、アルファ チャネルを使用して PNG に保存するだけで問題なく動作するはずです (申し訳ありませんが、BlitzMax で具体的にこれを行う方法がわかりません)。常に RGBA モードを使用していることを確認してください。
于 2010-11-25T09:26:51.237 に答える