Pass-Through Shader は Vertex と Fragment という二つのコードで成り立っています。

このエントリーをはてなブックマークに追加

Vertex と Fragment について

頂点およびフラグメント、二つのシェーダがやってることは至極単純で

  1. 頂点シェーダで gl_Position 変数を使って頂点の位置を指定し、
  2. フラグメントシェーダで 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

次のページへ


Leave a Reply

Your email address will not be published. Required fields are marked *