Next」で、次期Starlingフレームワークについて、とくに新しいSprite3Dの説明がなされました。その中身をかいつまんでご紹介します。Sprite3DStarlingフレームワークは、つぎの正規リリースとなるバージョン1.6に向けて開発が進められています。新バージョンには、これまでどおりバグの修正や最適化が加えられます。これまで要望の多かった新たな機能が備わります。それがSprite3Dクラスです。このクラスを用いれば、あらゆる表示オブジェクトを3次元座標空間で動かすことができます。真の遠近法が使えることを意味します。それは特別の効果というだけでなく、Starlingがこれまでできなかった新しい考え方が採入れられるのです。実際に、この機能を用いてできることを紹介するビデオが用意されました(ビデオ001)。簡単な神経衰弱のゲームに、見栄えのする3次元の効果を加えています。Sprite3D(英語)この機能はすでに直近の開発版には備わっています。いくつか説明を補いましょう。新たなクラスとして加えたのかということです。10がそうだったように、これまでのDisplayObjectに3次元のプロパティを加えることも考えられました。核となるStarlingのエンジンは2次元なのです。これまでユーザーが書いてきたコードも2次元でしょう。AGALコードで独自の表示オブジェクトをつくっても同じです。3次元の論理にもとづいて別のコンテナに分けることで、古いコードを確実に動かせます。大切なのは、新たなコードがこれまでより複雑にならないということです。オブジェクトはすべて単純で簡単な2次元のままだからです。違うのは、ただSprite3Dの助けを借りて、3次元空間の中を動かすことができるということだけです。平面のオブジェクトしか使えないという訳ではありません。6つのSprite3Dの子オブジェクトをひとつの親Sprite3Dオブジェクトにまとめて立方体にすることもできます(図001)。図001■6つの子Sprite3Dオブジェクトをひとつの親Sprite3Dオブジェクトに入れてつくった立方体それでも、Starlingは3次元のエンジンではありません。そのため、つぎのようないくつかの制約があります。Starlingは相変わらず奥行きの判定をしません(重なりの表示は子オブジェクトが加えられた順序にしたがいます)。今のところ、Sprite3Dひとつにつき1回のドローコールを生じます(最終リリースでは、ひとつの3次元変換されたSprite3Dに替え、問題の多くは軽減される予定です)。Sprite3Dはフラット化できません(Sprite3Dの中の子オブジェクトはできます)。最上位のSprite3Dに掛けたフィルタはキャッシュできません(キャッシュしないフィルタを掛けることはできます)。1.6は、他にも内部的な強化が施されています。15では、RenderTexturesを使うための制限が減りました。そのため、Starlingはフィルタを入れ子にできるようになります。フィルタを全画面に掛けたシーンの中に、フィルタを加えたオブジェクトが置けます。この強化により、RenderTexturesが占め続けるメモリを半分に減らせました。二重にバッファをもたずに済むからです。それはつまり、そのようなテクスチャへの描画が速くなることを意味します(ドローコールがひとつ減ります)。その他の強化としては、AssetManagerが複数素材を平行して読込めるようになり、ロード時間が大幅に減ります。改善されたButtonクラスには、オーバーと非アクティブの状態が加わりました。詳しい変更点は、新バージョンが公開される4ないし6週間後に明らかになります。2015年ロードマップ本リリースの後は、つぎのような機能が考えられています。ステンシルマスク(高速な任意形状のマスク)FragmentFilterチェーン(ひとつの表示オブジェクトに複数のフィルタを加える)カスタムバッチ最後の機能は、StarlingのAPIの変更がともなうかもしれません。2.0で備わることになるでしょう。これは、ユーザーがレンダラを独自に書き、カスタム表示オブジェクトも含めて、効率的にバッチできる機能です。