GMS のシェーダは新規作成した場合、”pass through”シェーダというテンプレートからスタートします。
“pass through”シェーダとは?
頂点情報や色情報をパススルー(通過/頂点や色を直接表示)する、ただそれだけのシェーダです。
赤緑青(RGB)の各色を指定された位置に表示するだけのシェーダに何の価値があるのかと、そう思う方が居るかもです。しかし一番基礎的なシェーダなので、これがテンプレとなっています。
これ(基礎)を発展させることで様々な表現を、GPU の強烈な演算能力を駆使して実現します。
頂点およびフラグメント、二つのシェーダがやってることは至極単純で
- 頂点シェーダで gl_Position 変数を使って頂点の位置を指定し、
- フラグメントシェーダで gl_FragColor 変数を使ってフラグメントの色を指定
究極的に要約すると、この二つしかやってません。
ところで “pass through” 以外のシェーダは?
GM:S で組み込みとして提供されているシェーダは pass-through だけ、それ以外の効果が必要な場合は自分でソースコードを探してリソースへ追加するか、完全自作する必要があります。
シェーダというものは基本的にシェーダだけで完結するものではなく、GML を使って GPU へ値を渡す処理などがほとんどの場合必要となります。この処理はそれぞれケースバイケースなので、GML を使ったスクリプト処理がどのようなものになるかは処理に応じて様々。なのでシェーダ単体で配布しているようなサイトは少なく、.gmz 形式でシェーダを使ったサンプルプロジェクトとしての配布が多くなります。※
※ .gmz 形式での配布は逐一プロジェクトを開いてソースコードを解析してと、シェーダを簡単に追加したいだけの時には都合が悪いです。
各種シェーダのソースコードは公式の提供するシェーダサンプル、有志によるマーケットプレイス上での提供、旧フォーラム/新フォーラムにもサンプルやドキュメントがあります。
その他、GM:S 向けでなくとも WebGL や GLSL 向けドキュメントは開発の役に立ちます。
[divpage]