GM:S + GLSL ES シェーダに関するページを公開
参考(prester.org/gms):GameMaker:Studio 1.4 Shaders 参考(prester.org):GameMaker:Studio 1.4 GLSLES:Shader48
WP ブログ+専用サイト+GitHub の三段構成になる予定。専用サイトではシェーダサンプルコードを公開していますが、まだ数が揃ってません。ファイルダウンロードは GitHub を利用しようと思っているので、そちらは更にもうちょっと後となります。
YoYoGames は GM(7 〜 8) シリーズの頃にシェーダへ初めて対応、その頃にはシェーダ記述言語も HLSL を標準としていたようです。それが GM:S 1.2 から GLSL ES という OpenGL 系のシェーダを標準として扱うよう仕様を変更しました。
なぜ GLSL ES なのか?
GLSL ES は GPU 上で動く「シェーダ」という小さなプログラムを制御するために利用される「シェーダ記述言語」と呼ばれるもの、OpenGL ES というグラフィックス API で利用される C / C++ に似たプログラミング言語です。
OpenGL ES というのは OpenGL のモバイル/組み込み用サブセットです。OpenGL の全機能が使えるものをフルセット版と呼び、モバイル用に最初から機能制限された OpenGL のサブセット(機能制限版)が OpenGL ES という位置付。
現在のスマートフォンは iPhone/Android ともに OpenGL ES を採用、PlayStation 3/4 などコンシューマ機も OpenGL ES をベースに独自拡張を施した PSGL を採用しています。
主要モバイルが採用、勢い付く
スマートフォンは iPhone と Android が OpenGL ES を採用し、これでモバイル用グラフィックス API の覇権が決まりました。そしてモバイルでカジュアルゲームがもてはやされるようになると、プログラマブルシェーダと GLSL ES の需要が順調に増えていきました。
YoYoGames は GM シリーズの頃は PC ゲーム開発をメインターゲットにしていたので、その頃 PC = WindowsPC だったから、すなわちシェーダも DirectX 系の HLSL にとりま対応していれば良かった。
しかしスマートフォン普及と共に事情は急変。ゲーム用も GLSL ES の需要が増え、GM:Studio では標準のシェーダ記述言語を GLSL ES へ変更。
この時 YoYoGames は HLSL を切り捨てることはせず、GLSL ES コードを HLSL へ変換する「クロスコンパイラ」の採用で互換性を維持しました。開発者は GLSL ES でシェーダを記述、Windows PC 用ビルドの際に自動で HLSL へ変換されるため、HLSL 向けコードを別途書かなくて済みます。
どうなる? Clickteam の F3 と OpenGL
ClickTeam が F3 の開発に Qt を使うと宣言した頃、つまり約3年くらい前、「次製品で DirectX を捨てるのか?」と開発陣に質問したことがあります。その頃質問に対する回答は「無回答(原文まま)」でしたが、先日行われた Clickteam AMA on Reddit でようやく回答に近いものを得ました。
最新の DirectX へ対応することを重視せず、動作互換性のために OpenGL を重視しているというもの。F3 は全てのプラットフォームでシェーダに対応しているから、つまり GLSL ES は F3 でも必ず重宝するし、役に立ちます。
吉里吉里のユニバーサルトランジションを GLSL ES で再現
Shader48 では GLSL ES のシェーダサンプルコードを掲載しています。
吉里吉里のユニバーサルトランジションを GM:Studio で再現したり、フォトショップのブレンドモードを再現、その他様々な効果を実現するためのシェーダソースコードを公開。ソースコードは今後もゆっくり追加されます。目標 48 個。
GM:Studio でシェーダを利用する際、どうぞご利用ください。ページ閲覧はモバイルに対応。
連絡先
シェーダは WebGL も動作確認してありますが、全てのブラウザおよび環境で正常に動く保証はありません。特にモバイルのブラウザ上では WebGL ほぼ動かないです。
Android などモバイル機器のネイティブでは一部シェーダを動作確認済み、しかし実機でのテストがまだ全く足りていません。実機での動作検証結果を個人的に集めているので、動いた/動かなかったなど、ご利用中の実機・環境等の情報を提供して頂けたら幸いです。
各ブログコメント欄かメール、twitter 等でご連絡ください。
GMC Member Profile:prester
ブログ・問い合わせフォーム
ツィッター:Presbyter