ゲーム紹介
Unity の ParticleSystem のレンダリングモジュールには、パーティクルのテクスチャを進行方向に引き伸ばして描画する Streched Billboard という描画モードがあります。
しかし、残念なことに射線軸の方向から見ると薄くなってしまい、板ポリゴンであることが簡単にわかってしまいます。
そのため、3D シューティングの自機の弾丸に使うと悲しいことになります。
しかし、ご存じの方も多いと思いますが、この問題を解決した描画方法が、セガサターンのパンツァードラグーンシリーズ・PlayStation のオメガブーストなどで使われています。
昔からこの描画アルゴリズムを知りたくとも知る機会がなく、残念な思いをしていたのですが、Unite 2016 Tokyo の安原氏の講演「ハードウェア性能を引き出して60fpsを実現するプログラミング・テクニック」で公開されたゲーム「Another Thread」にて「楕円シェーダー」の名前で紹介されていました。
ソースコードは下記の URL にて公開されています。
https://github.com/unity3d-jp/AnotherThread
AnotherThread/Assets/Scripts/Beam.cs
AnotherThread/Assets/Shaders/beam.shader
の 2 つのファイルが楕円シェーダー関係のソースになります。
このおかげでシェーダーによる実装方法がわかりましたが、ParticleSystem は使っておらず独自に描画されていました。
しかし、Particle System の機能を調べていくうちに、Custom Vertex Stream とシェーダーの改造で実現できるのではないかと思い、やってみたらできました。
操作方法:
キーボードとマウスを使います。
・WASD (またはカーソルキー) で上下左右に移動
・ZX で全身・後退
・マウスカーソルを画面の端にもっていくとその方向を向く
青いパーティクルが既存の Streched Billboard、黄色いパーティクルが楕円シェーダーによる描画です。
コメント
コメントを残すには、ログインが必要です。 新規ユーザー登録 / ログイン