Pass-Through Shader は Vertex と Fragment という二つのコードで成り立っています。
Vertex と Fragment について
頂点およびフラグメント、二つのシェーダがやってることは至極単純で
- 頂点シェーダで gl_Position 変数を使って頂点の位置を指定し、
- フラグメントシェーダで gl_FragColor 変数を使ってフラグメントの色を指定
究極的に要約すると、この二つしかやってません。
名称 | 説明 | 実行順 |
---|---|---|
Vertex | 頂点情報を扱う | Fragment より先 |
Fragment | 色情報を扱う | Vertex の後 |
実行順が決まっています、その他仕様等
Vertex と Fragment の実行は順番を入れ替えることは絶対できません。
Vertex と Fragment は名前空間を共有しない別々のアプリケーションです。※ 後述
GLSL ES は中間バイトコードを出力せず、アプリ起動時に毎回コンパイルが必要な仕様となっています。構文エラーなどはコンパイル実行するまで分かりませんし、GM:S のシェーダエディタも構文エラーを事前にチェックできません。
GM:S のクロスコンパイラについて
GM:S は GLSL ES を選択してシェーダを記述すれば、必要に応じて HLSL へ変換される仕組みとなっています。ウィンドウズ用バイナリを作る場合でも、HLSL に固有の機能を利用しない限り、HLSL を選択してシェーダを作成する必要はありません。
しかし HLSL から GLSL ES などへ変換するクロスコンパイラは備わっていないため、拡張モジュールを使って複数プラットフォーム向け出力機能を利用する場合や、常に互換性を重視するのならば必ず GLSL ES を選択してシェーダコードを記述してください。
シェーダを新規作成した場合、デフォルトで GLSL ES が選択されます。
参考(YoYoGames Tech Blog):Shaders Overview – Part 2
[divpage]